#P15613. [2024年保加利亚国家队组队赛Junior]connect连接
[2024年保加利亚国家队组队赛Junior]connect连接
题目描述
奥林匹亚是一个幅员辽阔的国家,共有 N 个城市,由 M 条道路连接。任意一对城市之间至多只有一条道路直接连接,且每条道路连接的两个端点一定不同。为了方便起见,城市编号为 1 到 N。
整个奥林匹亚的道路网络是连通的,也就是说,任意两个城市之间都可以通过若干条道路到达。
随着新一轮、甚至是“双重”的选举即将到来,当局决定维修部分道路,以改善 K 个主要城市之间的连通性。更准确地说,希望做到:任意两个主要城市之间,都能够只通过被维修过的道路互相到达。每条道路的维修费用已知。
请你编写程序 connect,根据给定的道路、各道路的维修费用以及主要城市,求出使所有 K 个主要城市连通所需的最小总维修费用。
输入格式
第一行输入三个正整数 N、K、M,分别表示城市数、主要城市数和道路数。
第二行输入 K 个互不相同的正整数,表示主要城市的编号。
接下来 M 行,每行输入三个整数 x、y、c,表示城市 x 和城市 y 之间有一条双向道路,其维修费用为 c。
输出格式
输出一个整数,表示为了使所有主要城市仅通过维修后的道路互相连通,所需的最小总维修费用。
数据范围
2 <= K <= N <= 10^5K <= 51 <= M <= 2 * 10^51 <= 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。