0分救命QAQ
查看原帖
0分救命QAQ
162799
MegaMay楼主2020/8/2 22:13
#include<iostream>
#include<cstdio>
#include<algorithm>
#define maxn 1001
using namespace std;
int read(){
	int x=0;
	char e=getchar();
	while(e<'0'||e>'9') e=getchar();
	while(e>='0'&&e<='9'){
		x=x*10+e-'0';
		e=getchar();
	}
	return x;
}
struct node{
	int x,y,l;
}a[maxn*10];
int cmp(node c,node v){
	return c.l<v.l;
}
int n,m,k,f[maxn],ans,num;
int find(int x){
	return f[x]=x?f[x]:f[x]=find(f[x]);
}
int main(){
	n=read(),m=read(),k=read();
	for(int i=1;i<=n;i++) f[i]=i;
	for(int i=1;i<=m;i++) a[i].x=read(),a[i].y=read(),a[i].l=read();
	sort(a+1,a+m+1,cmp);
	for(int i=1;i<=m;i++){
		int fx=find(a[i].x),fy=find(a[i].y);
		if(fx!=fy) f[fx]=fy,ans+=a[i].l,num++;
		if(n-num==k){
			printf("%d",ans);
			return 0;
		}
	}
	printf("No Answer");
	return 0;
}

why? How should I do?

2020/8/2 22:13
加载中...