新家
时间限制:1秒 内存限制:256M
【题目描述】
大生意人小H决定重新购买一套住房作为自己的新家,以便最小化他每天到自己门店的行程。
小H 所在的城区有 \(N\)(\(1 \le N \le 10\,000\))个街区,共有 \(M\)(\(1 \le M \le 50\,000\))条双向道路连接某些街区,所有街区都能相互到达。
小H在 \(K\)(\(1 \le K \le 5\))个街区有自己的门店,每天小H 都会从自己的新家出发,都要巡视这 \(K\) 个门店,然后返回家中。小H 希望建家所在的街区不包含自己的门店。
请帮助 小H 选择最佳买房的街区,并计算他每天行程长度的最小可能值。
【输入格式】
第一行包含三个整数 \(N, M, K\)。
接下来 \(K\) 行每行包含一个在范围 \(1 \sim N\) 中的整数,表示门店的编号。每个门店都在不同的街区。
接下来 \(M\) 行每行包含三个整数 \(u, v, d\)(\(1 \le u, v \le N\),\(1 \le d \le 1000\)),表示有从街区 \(u\) 到街区 \(v\) 的长度为 \(d\) 的双向道路。
【输出格式】
一行一个整数,表示 小H 在选择最佳街区建设农场时,他每天行程长度的最小可能值。
【输入输出样例1】
Input
5 6 3
1
2
3
1 2 1
1 5 2
3 2 3
3 4 5
4 2 7
4 5 10
Output
12
【样例1解释】
在这组样例中,有 \(5\) 座街区,街区 \(1, 2, 3\) 有门店,还有 \(6\) 条双向道路。
一种可能的最优方案:FJ 在街区 \(5\) 建设农场。他每天的行程为 \(5 \to 1 \to 2 \to 3 \to 2 \to 1 \to 5\),总距离为 \(12\)。
【测试点性质】
对于所有数据满足:\(1≤N≤10000,1≤M≤50000,1≤K≤10,1≤L≤1000\),其中各测试点情况如下:
测试点1:\(N=5, M=6, K=3\)。
测试点2:\(N=30, M=300, K=3\)。
测试点3:\(N=100, M=1000, K=5\)。
测试点4:\(N=500, M=200, K=2\)。
测试点5:\(N=1000, M=5000, K=4\)。
测试点6:\(N=3000, M=20000, K=3\)。
测试点7:\(N=5000, M=40000, K=2\)。
测试点8:\(N=9000, M=50000, K=5\)。
测试点9:\(N=10000, M=50000, K=4\)。
测试点10:\(N=10000, M=50000, K=5\)。
测试点11:\(N=10000, M=50000, K=7\)。
测试点12:\(N=10000, M=50000, K=8\)。
测试点13:\(N=10000, M=50000, K=9\)。
测试点14:\(N=10000, M=50000, K=10\)。
测试点15:\(N=10000, M=50000, K=10\)。
【来源】
Mr.he