我们可以把东南大学的校园抽象成一个nnn个点,mmm条边的有向图,每条边有长度www。
在校园中有ppp个点上有障碍物,你最多可以搬走kkk个障碍物,即你最多经过kkk个有障碍物的点。
那么,现在请问,在最多可以搬走kkk个障碍物的条件下,你从点111出发,到其他点的最短距离分别为多少。
第一行,444个整数 n,m,p,k(1≤n≤105;0≤m≤min(105,n⋅(n−1));0≤p≤n−1;0≤k≤5)n,m,p,k(1\le n \le 10^5;0\le m \le \min(10^5,n·(n-1));0\le p \le n-1;0\le k \le 5)n,m,p,k(1≤n≤105;0≤m≤min(105,n⋅(n−1));0≤p≤n−1;0≤k≤5),分别代表图中的点数、边数、有障碍物的点数和你最多搬走的障碍物数量。 第二行,有ppp个整数,代表有障碍物的点的下标,保证这ppp个整数互不相同,且点111没有障碍物。 接下来连续的mmm行,每行333个整数 u,v,w(1≤u,v≤n;1≤w≤109)u,v,w(1\le u,v \le n;1\le w \le 10^9)u,v,w(1≤u,v≤n;1≤w≤109),代表一条有向边的起点、终点和边的长度。
保证最终给定的图无重边、无自环。
在一行中输出用空格隔开的nnn个整数,代表从点111出发到达nnn个点的最短距离,如果不能到达某一个点,那就输出-1。
-1
输入样例:
6 6 3 2 4 5 6 5 6 1 1 2 1 1 3 2 2 4 1 3 4 2 4 5 4
输出样例:
0 1 2 2 6 -1
样例解释: 下图即为样例代表的图,在点4,5,64,5,64,5,6分别有一个障碍物。