记录编号 | 379897 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | 口袋的天空 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | 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; }