旅行(Travel)

时间限制: 1000 ms 内存限制: 65536 kb
总通过人数: 0 总提交人数: 0

题目描述

starhder 突发奇想,要去 G 地,于是他搞来了一张地图,看怎么走才好。

地图上有很多城市,G 地也是一座城市。每两座城市之间都可能有直达方法,也有可能两座城市之间并不能直接相通,而要通过其他的城市转达。对于两个城市之间的直达方法,需要一定的时间,当然,如果从 A 城市到 B 城市的直达方法需要 T 时间,那么从 B 城市到 A 城市的直达方法也是 T 时间。

starhder 想要用最短的时间到达 G 地,但是有个问题,他发现,地图上有些城市对他很有吸引力。所以他要在经过这些城市的基础上时间最短。

starhder 已经用 1、2、3、4、5……n 标记了他可能经过的城市(1 代表出发地,n 代表 G 地),但是眼花缭乱的地图让他感到烦恼。他请你来解决这个问题,告诉他最小需要多少时间到达 G 地。

输入

第一行是三个正整数 n 和 m,t,n 表示总共有多少个城市(包括出发地和 G 地),城市数不会超过 200 个;m 是城市的直达路线数(1<=m<=20,000),t 表示一定去的城市数,0<=t<=10(不包括出发地和 G 地)。

接下来一行有 t 个整数,表示一定要去的城市。

接下来 m 行,每行包含三个正整数,前两个数表示分别代表一个城市,第三个数是这两个城市之间的直达时间。直达时间不会超过 1,000,000。

输出

一个数,题目要求的得最短时间。

输入样例

5 10 2
4 3
1 2 29
1 3 91
1 4 17
1 5 30
2 3 12
2 4 65
2 5 70
3 4 38
3 5 16
4 5 44

输出样例

71

Source

江苏省苏州中学 NOIP 复赛训练题 2012

相关推荐