记录编号 379897 评测结果 AAAAAAAAAA
题目名称 口袋的天空 最终得分 100
用户昵称 GravatarHyoi_0Koto 是否通过 通过
代码语言 C++ 运行时间 0.060 s
提交时间 2017-03-07 20:45:59 内存使用 3.36 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int size=200010;
struct dc
{
    int f,t,d;
}l[size];
int f[size];
int find(int x)
{
    if(f[x]==x)
        return x;
    return f[x]=find(f[x]);
}
bool cmp(dc a,dc b)
{
    return a.d<b.d;
}
int main()
{
    freopen("cotton.in","r",stdin);
	freopen("cotton.out","w",stdout);
	int n,m,k;
    scanf("%d%d%d",&n,&m,&k);
    k=n-k;
    int ans=0;
    for(int i=1;i<=m;i++)
        cin>>l[i].f>>l[i].t>>l[i].d;
		//scanf("%d%d%d",&l[i].f,&l[i].t,&l[i].d);
    sort(l+1,l+m+1,cmp);
    for(int i=1;i<=n;f[i]=i,i++);
    for(int i=1;i<=m;i++)
    {
        int x=find(l[i].f);
        int y=find(l[i].t);
        if(x!=y)
        {
            k--;
            f[x]=y;
            ans+=l[i].d;
        }
        if(k==0)
            break;
    }
    if(k)
        printf("No Answer");
    else
        cout<<ans;
    return 0;
}