2859: 找位置

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

题目描述

FJ 想找一个最好的位置来建新农场,这样他每天可以少走些路。FJ 所在的区域,有 N
个城镇(1 <= N <= 10,000),城镇之间,有 M(1 <= M <= 50,000)条双向路相连,所有城镇都
可以借助一些路相互连接。
FJ 需要你的帮助来选择最合适建新农场的城镇。K(1 <= K <= 5)个城镇中有超市,FJ 每
天都会去这些超市。他计划每天从新农场出发,访问包含超市的 K 个城镇,然后返回新农
场。FJ 可以按照任意的顺序访问这些超市。FJ 只会在 N-K 个城镇中,选择一个城镇来建新
农场。因为其他城镇的房价,比较低一些。如果他把农场建在最优的位置,而且尽可能明智
的选择行走路线。
请帮 FJ 计算,他每天需要行走的路线长度。

输入

第 1 行:三个空格隔开的整数,N,M 和 K。
第 2..1+K 行:第 i+1 行包含一个整数,范围 1..N,表示包含第 i 个超市的城镇。每个超
市在不同城镇。
第 2+K..1+K+M 行:每行包含三个空格隔开的整数,i,j(1 <= i,j <= N),和 L(1 <= L <=
1000), 表示城镇 i 和城镇 j 之间存在一条长度为 L 的路。

输出

输出一行一个数,表示他把农场建在最优的位置,每天需要行走的最短路线长度。

样例输入 复制

5 6 3
1 1
2 2
3 3
1 2 1
1 5 2
3 2 3
3 4 5
4 2 7
4 5 10

样例输出 复制

12

提示

【样例解释】
FJ 在 5 号城镇建立农场。他每天的行走路线为 5-1-2-3-2-1-5,路线长度为 12。

【数据规模】
对于 20%的数据满足:N <= 50,M <= 500
对于 50%的数据满足:N <= 1000,M <= 5000
对于 100%的数据满足:1 <= N <= 10000,1 <= M <= 50000,1 <= K <= 5