避险(ward)
题目描述
Y 同学所在的城市由 n 个路口和 m 条双向道路构成。第 i 条道路连接两个路口,通行耗时为 wi。若干路口已经出现危险信号;从时刻 0 开始,信号会沿道路向外扩散,经过一条道路所需时间同样为该道路的通行耗时。一个路口的安全余量定义为危险信号最早到达它的时刻。
Y 同学要从路口 s 前往路口 t。一条路线的安全余量,是路线经过的所有路口安全余量的最小值。出发路口一定会被计入。Y 同学还携带一次性护盾:在离开出发路口后,他可以在进入某一个路口时启用护盾,使这个路口不参与路线安全余量的计算。护盾至多使用一次。
请先最大化路线安全余量;在安全余量最大的前提下,再最小化通行总耗时。若无法到达,输出 −1。道路权值和答案均为整数。
输入格式
第一行五个整数 n,m,k,s,t,其中 k 为危险源数量。第二行 k 个整数,表示危险源路口。接下来 m 行,每行三个整数 ui,vi,wi 表示一条道路。
输出格式
若无法从 s 到达 t,输出 -1。否则输出两个整数,依次表示最大安全余量和对应最短通行时间。
样例
5 6 1 1 5
3
1 2 2
2 5 2
1 3 1
3 4 2
4 5 1
2 4 3
1 4
数据范围与约定
对于所有数据,2≤n≤105,1≤m≤2×105,1≤k≤n,1≤wi≤106。图中可能存在重边,可能不连通。保证每个连通块中至少包含一个危险源。
| 测试点 |
分值 |
范围 |
特殊性质 |
| 1∼4 |
20 |
n≤12,m≤30 |
无 |
| 5∼8 |
n≤6×103,m≤1.1×104 |
| 9∼12 |
n≤3×104,m≤5.6×104 |
| 13∼16 |
n≤7×104,m≤1.3×105 |
| 17∼20 |
n≤105,m≤2×105 |