充电网络
时间限制:1秒 内存限制:256M
【问题描述】
为了推广他的贝斯拉(Bessla)电动拖拉机系列,Farmer John 希望展示贝斯拉的充电网络。他已标记了地图上 \(N\)(\(2\le N\le 5\cdot 10^4\))个编号为 \(1\ldots N\) 的兴趣点,其中前 \(C\)(\(1\le C<N\))个是充电站,其余为旅游目的地。这些兴趣点之间由 \(M\)(\(1 \le M \le 10^5\))条双向道路连接,其中第 \(i\) 条连接不同的点 \(u_i\) 和 \(v_i\)(\(1\le u_i,v_i\le N\))且长度为 \(l_i\) 英里(\(1\le l_i\le 10^9\))。
贝斯拉一次充电最多可行驶 \(2R\)英里(\(1\le R\le 10^9\)),使之可以到达一个充电站 \(R\) 英里范围内的任何目的地。一个目的地被称之为交通便利的,如果可以从至少 \(K\)(\(1\le K\le 10\))个不同的充电站到达目的地。你的任务是帮助 Farmer John 确定交通便利的旅游目的地的集合。
【输入格式】
输入的第一行包含五个空格分隔的整数 \(N\),\(M\),\(C\),\(R\) 和 \(K\)。以下 \(M\) 行,每行包含三个空格分隔的整数 \(u_i\),\(v_i\) 和 \(l_i\),其中 \(u_i\neq v_i\)。
充电站的编号为 \(1,2,\ldots,C\)。其余兴趣点均为旅游目的地。
【输出格式】
首先输出一行,包含交通便利的旅游目的地的数量。然后升序输出所有交通便利的旅游目的地,每个一行。
【输入输出样例1】
Input
3 3 1 4 1
1 2 3
1 3 5
2 3 2
Output
1
2
【样例1解释】
我们在 \(1\) 有一个充电站。从这个充电站出发,我们可以到达 \(2\)(因为它与 \(1\) 的距离为 \(3\)),但不能到达 \(3\)(因为它与 \(1\) 的距离为 \(5\))。因此,只有点 \(2\) 是交通便利的。
【输入输出样例2】
Input
4 3 2 101 2
1 2 1
2 3 100
1 4 10
Output
2
3
4
【样例2解释】
我们在 \(1\) 和 \(2\) 有充电站,点 \(3\) 和 \(4\) 均位于 \(1\) 和 \(2\) 的 \(101\) 距离内。因此,点 \(3\) 和 \(4\) 都是交通便利的。
【输入输出样例3】
Input
4 3 2 100 2
1 2 1
2 3 100
1 4 10
Output
1
4
【数据说明】
- 测试点 \(4-5\):\(K=2\),\(N\le 500\) 且 \(M\le 1000\)。
- 测试点 \(6-7\):\(K=2\)。
- 测试点 \(8-15\):没有额外限制。
【来源】
Mr.he