如题
以下是代码
#include<bits/stdc++.h>
using namespace std;
long long int n,m,father[1000001],k,tot;
struct edgee{
int x,y,z;
}f[1000001];
bool cmp(edgee a,edgee b)
{
return a.z<b.z;
}
int find(int x)
{
if(father[x]!=x)
father[x]=find(father[x]);
return father[x];
}
int unionn(int x,int y)
{
return father[y]=x;
}
void kruskal()
{
sort(f+1,f+m+1,cmp);
for(register int i=1;i<=m;i++)
{
int a=f[i].x;
int b=f[i].y;
int w=f[i].z;
if(find(a)!=find(b))
{
unionn(a,b);
tot+=w;
k++;
}
}
}
int main()
{
cin>>n>>m;
for(register int i=1;i<=m;i++)
{
cin>>f[i].x>>f[i].y>>f[i].z;
father[i]=i;
}
kruskal();
if(k<n-1)
cout<<"orz"<<endl;
else cout<<tot<<endl;
return 0;
}