模板:Kruskal
int ds[N], n, m;
struct Edge {
int u, v, w;
} eg[M];
// 并查集省略
int kruskal() {
sort(eg + 1, eg + 1 + m);
int ans = 0;
for (int i = 1, cnt = n - 1; i <= m && cnt; ++i) {
auto& [u, v, w] = eg[i];
if (find(u) == find(v)) continue;
merge(u, v), --cnt, ans += w;
}
return ans;
}

浙公网安备 33010602011771号