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

There are no comments at the moment.