#P15613. [2024年保加利亚国家队组队赛Junior]connect连接

[2024年保加利亚国家队组队赛Junior]connect连接

题目描述

奥林匹亚是一个幅员辽阔的国家,共有 N 个城市,由 M 条道路连接。任意一对城市之间至多只有一条道路直接连接,且每条道路连接的两个端点一定不同。为了方便起见,城市编号为 1N

整个奥林匹亚的道路网络是连通的,也就是说,任意两个城市之间都可以通过若干条道路到达。

随着新一轮、甚至是“双重”的选举即将到来,当局决定维修部分道路,以改善 K 个主要城市之间的连通性。更准确地说,希望做到:任意两个主要城市之间,都能够只通过被维修过的道路互相到达。每条道路的维修费用已知。

请你编写程序 connect,根据给定的道路、各道路的维修费用以及主要城市,求出使所有 K 个主要城市连通所需的最小总维修费用

输入格式

第一行输入三个正整数 NKM,分别表示城市数、主要城市数和道路数。

第二行输入 K 个互不相同的正整数,表示主要城市的编号。

接下来 M 行,每行输入三个整数 xyc,表示城市 x 和城市 y 之间有一条双向道路,其维修费用为 c

输出格式

输出一个整数,表示为了使所有主要城市仅通过维修后的道路互相连通,所需的最小总维修费用。

数据范围

  • 2 <= K <= N <= 10^5
  • K <= 5
  • 1 <= M <= 2 * 10^5
  • 1 <= c <= 10^9

子任务

子任务 分值 N K M 其他限制
1 0 - 样例测试
2 22 <= 20 <= 5 <= 40 -
3 14 <= 10 <= 3 <= 10^5
4 15 <= 10^3 <= 4 <= 2 * 10^3
5 23 <= 10^5 = 4 <= 2 * 10^5
6 26 = 5

对于某个子任务,只有通过该子任务中的所有测试点,才能获得该子任务的分数。

样例

输入

5 3 8
5 2 3
1 2 2
2 3 3
3 4 2
4 5 5
5 1 3
3 1 3
3 5 6
4 2 2

输出

8

说明

展示了 5 个城市与 8 条道路的连接情况,其中主要城市用橙色标出,最优维修的道路用绿色加粗标出。

样例中,最优方案所维修道路的总费用为 3 + 3 + 2 = 8。这些道路能够保证主要城市之间连通:

  • 城市 5 到城市 3 的路径为 5 - 1 - 3
  • 城市 5 到城市 2 的路径为 5 - 1 - 2
  • 城市 3 到城市 2 的路径为 3 - 1 - 2