模板: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;
}

posted @ 2026-10-13 20:17  zxqMATT  阅读(5)  评论(0)    收藏  举报