用的krusckal,不晓得哪里错了,请大佬帮忙看看!!waw
#include<bits/stdc++.h>
using namespace std;
struct node
{
int x,y,w;
}edge[10010];
int m,n,k,sum,x,y,z;
int father[1010];
int find(int i)
{
if(father[i]==i)
return i;
return father[i]=find(father[i]);
}
void u(int i,int j)
{
father[find(i)]=find(y);
}
bool cmp(node a,node b)
{
return a.w <b.w ;
}
int main(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++)
father[i]=i;
for(int i=1;i<=m;i++)
cin>>edge[i].x >>edge[i].y >>edge[i].w ;
sort(edge+1,edge+1+m,cmp);
int e=0;
for(int i=1;i<=n;i++)
{
if(find(edge[i].x )==find(edge[i].y ))
continue;
u(edge[i].x ,edge[i].y );
e+=1;
sum+=edge[i].w ;
if(e==n-k)
break;
}
cout<<e<<" "<<k<<endl;
if(e!=n-k)
{
cout<<"No Answer"<<endl;
return 0;
}
cout<<sum<<endl;
return 0;
}
拜托了