#P1015. 7unar的退休生活

    ID: 23 Type: Default 1000ms 256MiB Tried: 7 Accepted: 4 Difficulty: 5 Uploaded By: Tags>图结构贪心最小生成树Kruskal

7unar的退休生活

背景

7unar 最近继承了爷爷在星露谷的农场。

为了提高灌溉效率,最近他正在研究水管网铺设的问题……

描述

现在有 nn 块田地需要铺设灌溉水管网。由于农场里障碍物较多,7unar 只得到了 mm 条可行的水管路线——每条路线连接两块田地,并有一个铺设成本 ww

他希望用最低的总成本让所有田地连通成一个灌溉网络,这样水就能从任意一块田流到任意另一块田了。

形式化的,给定一个 nn 个节点 mm 条边的无向带权连通图,求最小生成树(MST)的边权和。

最小生成树是指:选出 n1n-1 条边使图连通,且边权和最小。

输入格式

第一行两个整数 n,mn, m,表示田地数与可行水管数。

接下来 mm 行,每行三个整数 a,b,wa, b, w,表示田地 aabb 之间可以铺设水管,花费为 ww

保证图是连通的。

输出格式

一行一个整数,表示最小生成树的边权和。

样例

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

样例解释:选择边 (1,2,1)、(2,3,2)、(1,4,3),总花费 6。这是连接 4 个节点的最小可能值。

限制

2n10002 \le n \le 1000n1mn(n1)2n-1 \le m \le \frac{n(n-1)}{2}1w1041 \le w \le 10^4。保证图连通。

对于 30%30\% 的数据,n100n \le 100

提示:Kruskal 算法——将所有边按权值从小到大排序,依次尝试加入 MST,若当前边的两端已经连通(用并查集判断)则跳过,否则加入。共选 n1n-1 条边。