1576: 旅游路线

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:6 解决:3

题目描述

       Bytelandn个城市(编号从1n),它们之间通过n ?C 1条双向的道路相连,从任意城市都可以走到其他的任何城市。

       一天,starhder到了编号为k的城市。他计划从城市k开始,游遍城市m1m2m3……mj(不一定要按这个顺序旅游)。每个城市mi都是不同的,并且,也与k不同。         Starhder ―― 就像每一个旅行家一样,携带的钱总是有限的,所以,他要以最短的路程旅行完所有的城市(从城市k开始)。

       于是,他请你帮助计算一下,旅游完上述的城市最短的路程是多少?

输入

       第一行包含两个整数,上文中的nk,以一个空格隔开。(2<= n <=500001 <= k <=n

       下面的n ?C 1行每行描述一条路,第i + 1行包含3个整数aibidi,相邻两个数用一个空格隔开(1<= ai,bi <= n1<= di <= 1000),aibi是用道路直接相连的城市编号,di是这条道路的长度。

       n + 1行包含一个整数j,是starhder要旅游的城市数(1<= j <= n - 1),接下来一行包含j个不同的整数m1m2,……,mj,每两个相邻的整数用一个空格隔开,表示starhder想要去的城市。(1<= mt<=nmt <> k)。

输出

       输出只有一行,包含一个整数:starhder旅游的最短路程。

样例输入 复制

4 2
1 2 1
4 2 2
2 3 3
2
1 3

样例输出 复制

5