0分求调
查看原帖
0分求调
768270
__why楼主2023/11/17 19:23
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1005,maxm = 10005;
int f[maxn];
struct way{
	int left,right;
	int size;
	void input(){
		cin>>left>>right>>size;
	}
}road[maxm];
bool pd(way x,way y){
	return x.size<y.size;
}
int find(int x){return f[x] == x ? x:f[x] = find(f[x]);}
int main(){
	int n,m,k,cnt = 0,sum = 0;
	cin>>n>>m>>k;
	for(int i = 1;i<=m;i++){
		road[i].input();
	}
	sort(road,road+m+1,pd);
	for(int i = 1;i<=m;i++){
		if(find(road[i].left)!=find(road[i].right)){
			f[road[i].left] = f[road[i].right];
			sum+=road[i].size;
			cnt++;
		}
	}
	if(cnt!=n-k){
		cout<<"No Answer";
	}else{
		cout<<sum;
	}
	return 0;
}
2023/11/17 19:23
加载中...