p1195口袋的天空,求助!!!!
查看原帖
p1195口袋的天空,求助!!!!
457016
zhouqiyue楼主2023/9/26 20:23

用的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;
}

拜托了

2023/9/26 20:23
加载中...