#P1120. 必访点最短行程

必访点最短行程

题目描述

某片区域由 NN 个据点和 MM 条双向道路组成,道路都有正整数长度,并且任意两个据点之间都可以互相到达。

其中有 RR 个据点被标记为必须巡查。巡查员可以任选一个必须巡查的据点作为起点,也可以在任意一个必须巡查的据点结束。

巡查员沿道路移动,过程中允许经过非必须巡查点,也允许重复经过某些点或边。请计算至少需要走多远,才能让所有必须巡查点都至少被访问一次。

输入格式

第一行输入三个整数 N,M,RN,M,R

第二行输入 RR 个互不相同的整数 r1,r2,,rRr_1,r_2,\ldots,r_R,表示必须巡查的据点。

接下来 MM 行,每行输入三个整数 ai,bi,cia_i,b_i,c_i,表示据点 aia_ibib_i 之间有一条长度为 cic_i 的双向道路。

输出格式

输出一个整数,表示完成巡查任务所需的最短总路程。

样例

4 4 3
1 3 4
1 2 2
2 3 2
3 4 2
1 4 10
6

样例说明

一种最短路线是从 11 出发,经过 22 到达 33,再到达 44,总长度为 2+2+2=62+2+2=6

数据范围

  • 对于 50%50\% 的数据,2N2002\le N\le 200N1MN(N1)2N-1\le M\le \dfrac{N(N-1)}22R82\le R\le 8
  • 对于 100%100\% 的数据,2N2002\le N\le 200N1MN(N1)2N-1\le M\le \dfrac{N(N-1)}22R202\le R\le 201ci1051\le c_i\le 10^5,图连通,必访点互不相同。