OlveraeUNSW
返回题目列表
COMP2521

MST · 最小生成树总权重

MST · 求最小生成树的总权重

读入一张带权无向连通图,用 Kruskal 算出最小生成树的总权重。并查集(find)、边的结构体与排序(qsort)都已给好,你只需补全 Kruskal 的主循环。

做法:遍历按权重升序排好的边,对每条边 (u, v, w):若 find(u) != find(v)(两端不在同一集合,加它不成环),就 union 它们、并把 w 累加进 total;否则跳过。

易错点(正是错误实验室里的坑):① 必须判 find(u) != find(v) 才加,否则会成环、总权重偏大。② 边要先升序排序(已用 qsort 帮你排好),别按输入顺序。③ 合并集合:parent[find(u)] = find(v)。

输入

  • 第 1 行:V E(顶点数、边数;保证图连通)。
  • 接下来 E 行:u v w,一条权重为 w 的无向边。

输出

  • 一行:最小生成树的总权重。

示例:输入 4 4 / 0 1 1 / 1 2 2 / 2 3 3 / 0 3 4 → 输出 6(选 1+2+3,跳过会成环的 4)。

样例

stdin
4 4
0 1 1
1 2 2
2 3 3
0 3 4
期望输出
6
stdin
5 7
0 1 2
0 3 6
1 2 3
1 3 8
1 4 5
2 4 7
3 4 9
期望输出
16
c-dcc
14