题号:NC50749
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld
题目描述
J国有n座城市,这些城市之间通过m条单向道路相连,已知每条道路的长度。
一次,居住在J国的Rainbow邀请Vani来作客。不过,作为一名资深的旅行者,Vani只对J国的k座历史悠久、自然风景独特的城市感兴趣。
为了提升旅行的体验,Vani想要知道他感兴趣的城市之间「两两最短路」的最小值(即在他感兴趣的城市中,最近的一对的最短距离)。
也许下面的剧情你已经猜到了——Vani这几天还要忙着去其他地方游山玩水,就请你帮他解决这个问题吧。
输入描述:
每个测试点包含多组数据,第一行是一个整数T,表示数据组数。注意各组数据之间是互相独立的。
对于每组数据,第一行包含三个正整数n,m,k,表示J国的n座城市(从
编号),m条道路,Vani感兴趣的城市的个数k。
接下来m行,每行包括3个正整数x,y,z,表示从第x号城市到第y号城市有一条长度为z的单向道路。注意x,y可能相等,一对x,y也可能重复出现。
接下来一行包括k个正整数,表示Vani感兴趣的城市的编号。
输出描述:
输出文件应包含T行,对于每组数据,输出一个整数表示k座城市之间两两最短路的最小值。
示例1
输入
复制
2
6 7 3
1 5 3
2 3 5
1 4 3
5 3 2
4 6 5
4 3 7
5 6 4
1 3 6
7 7 4
5 3 10
6 2 7
1 2 6
5 4 2
4 3 4
1 7 3
7 2 4
1 2 5 3
说明
对于第一组数据,1到3最短路为5;1到6最短路为7;3,6无法到达,所以最近的两点为1,3,最近的距离为5。
对于第二组数据,1到2最短路为6;5到3最短路为6;其余的点均无法互相达,所以最近的两点为1,2和5,3,最近的距离为6。
备注:

。