有点乱,求调,谢谢!
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,z,cnt=0,cnt2=0,fa[20010];
int find(int x)
{
if(x==fa[x])
{
return x;
}
return fa[x]=find(fa[x]);
}
struct ba{
int d1,d2,cd;
}a[200010];
bool cmp(ba x,ba y)
{
return x.cd<y.cd;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
fa[i]=i;
}
cin>>m;
for(int i=1;i<=m;i++)
{
cin>>x>>y>>z;
a[i].d1=x;
a[i].d2=y;
a[i].cd=z;
}
sort(a+1,a+m+1,cmp);
for(int i=1;i<=m;i++)
{
if(find(a[i].d1)==find(a[i-1].d1))
{
continue;
}
fa[find(a[i].d1)]=find(a[i].d2);
cnt2+=a[i].cd;
cnt++;
if(cnt==n-1)
{
break;
}
}
for(int i=1;i<=n;i++)
{
if(find(fa[i])!=find(fa[n]))
{
cout<<"orz";
return 0;
}
}
cout<<cnt2;
return 0;
} ``````