1576: 旅游路线
内存限制:256 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:6
解决:3
题目描述
在Byteland有n个城市(编号从1到n),它们之间通过n ?C 1条双向的道路相连,从任意城市都可以走到其他的任何城市。
一天,starhder到了编号为k的城市。他计划从城市k开始,游遍城市m1,m2,m3……,mj(不一定要按这个顺序旅游)。每个城市mi都是不同的,并且,也与k不同。 Starhder ―― 就像每一个旅行家一样,携带的钱总是有限的,所以,他要以最短的路程旅行完所有的城市(从城市k开始)。
于是,他请你帮助计算一下,旅游完上述的城市最短的路程是多少?
输入
第一行包含两个整数,上文中的n和k,以一个空格隔开。(2<= n <=50000,1 <= k <=n)
下面的n ?C 1行每行描述一条路,第i + 1行包含3个整数ai,bi,di,相邻两个数用一个空格隔开(1<= ai,bi <= n,1<= di <= 1000),ai和bi是用道路直接相连的城市编号,di是这条道路的长度。
第n + 1行包含一个整数j,是starhder要旅游的城市数(1<= j <= n - 1),接下来一行包含j个不同的整数m1,m2,……,mj,每两个相邻的整数用一个空格隔开,表示starhder想要去的城市。(1<= mt<=n,mt <> k)。
输出
输出只有一行,包含一个整数:starhder旅游的最短路程。
样例输入 复制
4 2
1 2 1
4 2 2
2 3 3
2
1 3
样例输出 复制
5