20pts玄关求条
查看原帖
20pts玄关求条
1524918
G_MARiA楼主2025/8/29 11:55

自我感觉跟一些题解除了变量名和函数外感觉一样但不知道为什么就过了S1的#1-#4,求调求调

#include<bits/stdc++.h>
using namespace std;
int n,m,k;
struct node{
	int x,y,l;
}e[10005];
int ans=0,cnt=0;
int anc[1005];
bool cmp(node a,node b){
	return a.l<b.l;
}
int find(int x){
	if(anc[x]!=x){
		anc[x]=find(anc[x]);
	}
	return anc[x];
}
int main(){
	scanf("%d%d%d",&n,&m,&k);
	if(k>n)return cout<<"No Answer",0;
	if(k==n)return cout<<0,0;
	for(int i=1;i<=n;i++){
		anc[i]=i;
	}
	for(int i=1;i<=m;i++){
		scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].l);
	}
	sort(e+1,e+m+1,cmp);
	for(int i=1;i<=n;i++){
		int fx,fy;
		fx=find(e[i].x);
		fy=find(e[i].y);
		if(fx!=fy){
			anc[fy]=fx;
			ans+=e[i].l;
			cnt++;
		}
		if(cnt==n-k){
			break;
		}
	}
	if(cnt==n-k) printf("%d",ans);
	else printf("No Answer");
	return 0;
}
2025/8/29 11:55
加载中...