返回题目列表
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