K. Going to Find Your Love

传统 1000 ms 1024 MiB
标准 IO
Special Judge

题目描述

我们可以把东南大学的校园抽象成一个nn个点,mm条边的有向图,每条边有长度ww

在校园中有pp个点上有障碍物,你最多可以搬走kk个障碍物,即你最多经过kk个有障碍物的点。

那么,现在请问,在最多可以搬走kk个障碍物的条件下,你从点11出发,到其他点的最短距离分别为多少。

输入格式

第一行,44个整数 n,m,p,k(1n105;0mmin(105,n(n1));0pn1;0k5)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),分别代表图中的点数、边数、有障碍物的点数和你最多搬走的障碍物数量。
第二行,有pp个整数,代表有障碍物的点的下标,保证这pp个整数互不相同,且点11没有障碍物。
接下来连续的mm行,每行33个整数 u,v,w(1u,vn;1w109)u,v,w(1\le u,v \le n;1\le w \le 10^9),代表一条有向边的起点、终点和边的长度。

保证最终给定的图无重边、无自环。

输出格式

在一行中输出用空格隔开的nn个整数,代表从点11出发到达nn个点的最短距离,如果不能到达某一个点,那就输出-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,6分别有一个障碍物。