比赛 防止浮躁的小练习V0.1 评测结果 AAAAAAAAAA
题目名称 口袋的天空 最终得分 100
用户昵称 森林 运行时间 0.012 s
代码语言 C++ 内存使用 0.47 MiB
提交时间 2016-10-07 16:42:10
显示代码纯文本
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<iomanip>
#include<functional>
#include<queue>
#include<stack>
#include<map>
#define WJ(name) freopen(#name".in","r",stdin);freopen(#name".out","w",stdout);
#define JW fclose(stdin);fclose(stdout);
using namespace std;
const int maxn=10010;
struct E{
	int from,to,w;
	bool operator<(const E& a)const{return w<a.w;}
}e[maxn];
int fa[maxn];
inline int find(const int& x){
	if(fa[x]!=x)return fa[x]=find(fa[x]);
	return x;
}
int main(){
	#define submit
	#ifdef submit
	WJ(cotton);
	#endif
	int n,m,k,tot=0,ff,ft,ans=0;
	scanf("%d%d%d",&n,&m,&k);
	if(m<n-k){
		puts("No Answer");
		goto L;
	}
	for(int i=1;i<=n;i++)fa[i]=i;
	for(int i=1;i<=m;i++)scanf("%d%d%d",&e[i].from,&e[i].to,&e[i].w);
	sort(e+1,e+1+m);
	for(int i=1;i<=m;i++){
		ff=find(e[i].from),ft=find(e[i].to);
		if(ff!=ft){
			fa[ff]=ft;
			++tot;
			ans+=e[i].w;
			if(tot==n-k)break;
		}
	}
	printf("%d",ans);
	#ifndef submit
	system("pause");
	#endif
	L:;
	JW;
	return 0;
}