Prim算法 模板题目
Submit solution
Points:
100
Time limit:
1.0s
Memory limit:
4M
Author:
Problem type
Allowed languages
C, C++
🌲 Prim 算法:建造通信网络
🧭 题目描述
在一个偏远山区,有 \(n\) 个村庄(编号为 \(1\) 到 \(n\))。现在政府希望在这些村庄之间建立通信网络,使得任意两个村庄都可以直接或间接通信。
他们计划通过建设无线电通信塔来实现,每个通信塔连接两个村庄并具有一定的建设费用。由于预算有限,政府希望选择一些通信塔,使得所有村庄连接成一个连通网络,并且总建设费用最小。
请你帮政府计算最小的建设费用是多少。
本题目要求你使用 Prim 算法或其他最小生成树算法解决。
📥 输入格式
第一行包含两个整数 \(n\) 和 \(m\),表示村庄数和通信塔候选数。
接下来 \(m\) 行,每行三个整数 \(u, v, w\),表示在村庄 \(u\) 和 \(v\) 之间建立通信塔的费用为 \(w\)。
- 输入保证图是连通的。
📤 输出格式
输出一个整数,表示使所有村庄联通所需的最小总费用。
🔒 数据范围
- \(1 \le n \le 10^4\)
- \(1 \le m \le 10^5\)
- \(1 \le u, v \le n\)
- \(1 \le w \le 10^6\)
- 所有边 \((u,v)\) 表示的图是无向图
📌 示例
输入样例 1
5 6
1 2 2
2 5 5
2 3 4
1 4 1
4 3 3
3 5 1
输出样例 1
7
说明:
选择边 \((1,4)\), \((1,2)\), \((3,5)\), \((2,3)\),总费用为 \(1 + 2 + 1 + 4 = 8\),构成最小生成树。
Comments