kruskal模板
2024-08-28 19:49:12
发布于:云南
11阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
struct node{
int u,v,dis;
}a[200005];
bool vis[200005];
int fa[200005];
int get(int x){
if(fa[x] == x) return x;
return fa[x] = get(fa[x]);
}
void merge(int x,int y){fa[get(x)] = get(y);}
bool cmp(node a,node b){return a.dis < b.dis;}
int main(){
int n,m; cin >> n >> m;
for(int i = 1;i <= n;i++) fa[i] = i;
for(int i = 1;i <= m;i++){
cin >> a[i].u >> a[i].v >> a[i].dis;
vis[a[i].u] = true;
vis[a[i].v] = true;
}
sort(a + 1,a + m + 1,cmp);
int ans = 0;
for(int i = 1;i <= m;i++){
if(get(a[i].u) != get(a[i].v)){
merge(get(a[i].u),get(a[i].v));
ans += a[i].dis;
}
}
for(int i = 1;i <= n;i++){
if(vis[i] == false){
cout << "orz";
return 0;
}
}
cout << ans;
return 0;
}
这里空空如也
有帮助,赞一个