rt,Kruskal算法,wa了
#include<bits/stdc++.h>
using namespace std;
struct edge{
int u,v,w;
}a[100001];
int n,m,sum,r=1,l;
bool cmp(edge x,edge y)
{
return x.w<y.w;
}
int fa[5001];
int find(int x1)
{
if(fa[x1]==x1) return x1;
else return fa[x1]=find(fa[x1]);
}
bool ch(int x,int y)
{
if(find(x)!=find(y))
{
fa[y]=x;
return 1;
}
else return 0;
}
int main()
{
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].w;
}
sort(a+1,a+1+m,cmp);
while(sum!=n-1)
{
if(ch(a[r].v,a[r].u)==1)
{
sum++;
l+=a[r].w;
}
r++;
if(r>m&&sum<n-1)
{
cout<<"orz";
return 0;
}
}
cout<<l;
return 0;
}
code