文章目录
- kruskal算法的思想
- 模板
kruskal算法的思想
模板
#include <bits/stdc++.h>
#define lowbit(x) ((x)&(-x))
#define int long long
#define endl '\n'
#define PII pair<int,int>
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
int fa[5100],n,m,sum=0,cnt=0;
struct asd{int u,v,w;
}p[200010];
bool cmp(asd x,asd y)
{return x.w<y.w;
}
int find(int x)
{if(x==fa[x])return x;elsereturn fa[x]=find(fa[x]);
}
bool kruskal()
{for(int i=1;i<=n;i++)fa[i]=i;for(int i=1;i<=m;i++){int x=find(p[i].u);int y=find(p[i].v);if(x!=y){sum+=p[i].w;fa[x]=y;cnt++;}}if(cnt==n-1)return true;elsereturn false;
}
signed main()
{IOSint T=1;//cin>>T;while(T--){cin>>n>>m;for(int i=1;i<=m;i++)cin>>p[i].u>>p[i].v>>p[i].w;sort(p+1,p+1+m,cmp);if(kruskal())cout<<sum<<endl;elsecout<<"orz"<<endl;}return 0;
}