题面描述
给定一张 n 个点 m 条边的无向图。每条边有一个权值 w∈{0,1}。w=0 表示这条边无法通过,w=1 则可以通过。
有 k 个点上面有按钮 si。
你现在位于 1 号点。每次,你可以做两件事情中的一件:
- 移动。移到相邻的一个点上,注意这条边一定是可以通行的。
- 按开关。此时,全部路的边权取反。即:w=0 变成 1,w=1 变成 0。
请问你是否能够到达 n 号点。如果可以,求出最少移动次数。
输入格式
第一行三个数 n,m,k。
接下来 m 行,每行三个数 ui,vi,wi表示一条连接 ui 与 vi 的边。
最后一行 k 个数,表示按钮的位置。
输出格式
如果无法到达,输出 −1。否则输出最少移动次数。
5 5 2
1 3 0
2 3 1
5 4 1
2 1 1
1 4 0
3 4
5
4 4 2
4 3 0
1 2 1
1 2 0
2 1 1
2 4
-1
数据范围
2≤n≤2×105
1≤m≤2×105
1≤k≤n
保证 1≤ui,vi≤n,且 ui=vi。
保证 1≤s1<s2<⋯<sk≤n。