30分求调,玄关
查看原帖
30分求调,玄关
1387270
xxt0218楼主2024/12/3 20:16

WA4~10

#include<bits/stdc++.h>
using namespace std;
int fa[114514],n,m,ans,tp,l;
struct clouds{
	int a;
	int b;
	int how_much;//权值 
}a[1145];
void init(){
	for(int i=0;i<n;i++)fa[i]=i;
}
int find(int a){
	if(fa[a]==a) return a;
	else return find(fa[a]);
}
void unnion(int a,int b){
	a=find(a);b=find(b);
	fa[a]=b;
}
bool cmp(clouds a,clouds b){
	return a.how_much<b.how_much;
}
int main(){
	cin>>n>>m>>l;
	init();
	for(int i=0;i<m;i++){
		cin>>a[i].a>>a[i].b>>a[i].how_much;
	}
	sort(a,a+m,cmp);
	for(int i=0;i<m;i++){
		if(find(a[i].a)!=find(a[i].b)){
			unnion(a[i].a,a[i].b);
			ans+=a[i].how_much;tp++;
		}
		if(tp>=n-l){
			cout<<ans;
			return 0;
		}
	}
	cout<<"No Answer";
	return 0;
} 
2024/12/3 20:16
加载中...