小z最近在玩某款游戏,其地图不能看成一个平面直角坐标系,而类似于一张无向图。
地图上存在n 个小镇,小镇从1 到n 编号。有m 条道路连接两个小镇,每条道路有其长度w_{i}。
小z在k 个小镇建立了传送门,也就是说,小z可以在任何时候任何瞬间不花费任何代价,直接到达这k 个小镇的任何一个。
小z一开始在小镇1,小z想按1 到n 的顺序访问所有小镇按顺序做任务,问小z需要走过的最短长度是多少。
小z可以提前到达某个小镇,但是必须做完前一个小镇的任务,才能做下一个小镇的任务。做任务本身不会增加长度。
第一行输入三个整数n,m,k,表示地图上小镇的数目,连接小镇道路的条数和建立了传送门的小镇的个数。
随后m 行,其中第i 行输入三个整数u_i, v_i, w_i,表示有一条道路连接了小镇u_i和小镇v_i,长度为w_i。
随后一行输入k 个整数,表示建立了传送门的小镇编号。
一行一个整数表示答案。
5 6 1 1 4 9 1 3 66 3 2 27 4 2 10 2 5 62 3 5 92 3
128
对于30%的数据有k=0。
另有30%的数据有m=n-1。
对于60%的数据有n\le 300。
对于100% 的数据有1\le n\le 2000,n−1\le m\le 5000,0\le k\le n,1\le u_i, v_i \le n,1\le w_i\le 1000。
数据保证给定的小镇两两相互可达。
时间限制 | 1 秒 |
内存限制 | 128 MB |