P3366 【模板】最小生成树
#include<bits/stdc++.h>
using namespace std;
int n,m,ans=1,ans1=0,f[100001];
struct node {
int x,y,t;
} a[1000010];
int cmp(node x,node y) {
if(x.t<y.t) return 1;
return 0;
}
int find(int num) {
if(f[num]==num) return num;
return f[num]=find(f[num]);
}
int main() {
cin>>n>>m;
for(int i=1; i<=n; i++) {
f[i]=i;
}
for(int i=1; i<=m; i++) {
cin>>a[i].x>>a[i].y>>a[i].t;
}
sort(a+1,a+1+m,cmp);
for(int j=1; j<=m; j++) {
int o=find(a[j].x);
int p=find(a[j].y);
if(o!=p) {
f[o]=f[p];
ans++;
ans1+=a[j].t;
}
if(ans==n){
cout<<ans1;
return 0;
}
}
cout<<"orz";
return 0;
}
本文来自博客园,作者:Arthur_Douglas,转载请注明原文链接:https://www.cnblogs.com/wenzhihao2023/p/17986661