首页 > 其他 > 详细

口袋的天空

时间:2019-07-15 12:44:40      阅读:91      评论:0      收藏:0      [点我收藏+]

[Time Gate]

https://www.luogu.org/problemnew/show/P1195

【解题思路】

这一题是裸的最小生成树
需要生成的棉花糖数大于云彩原料总数的情况"No Answer"
【code】
 1 // luogu-judger-enable-o2
 2 #include <cstdio>
 3 #include <iostream>
 4 #include <algorithm>
 5 using namespace std;
 6 int n,m,k,ans,fa[10005],cnt; 
 7 struct Node{
 8     int x;
 9     int y;
10     int l; 
11 }a[10005];
12 inline bool cmp(const Node &a,const Node &b){
13     return a.l<b.l;
14 }
15 inline int Find(int i){
16     if(fa[i]==i)return i;
17     return fa[i]=Find(fa[i]);
18 }
19 int main(){
20     //freopen(".in","r",stdin);
21     //freopen(".out","w",stdout);
22     scanf("%d%d%d",&n,&m,&k);
23     for(register int i=1;i<=m;i++)
24         scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].l);
25     sort(a+1,a+m+1,cmp);
26     for(register int i=1;i<=m;i++)
27         fa[i]=i;
28     cnt=n;
29     for(register int i=1;i<=m;i++){
30         int f1,f2;
31         f1=Find(a[i].x);
32         f2=Find(a[i].y);
33         if(f1!=f2){
34             fa[f1]=f2;
35             cnt--;
36             ans+=a[i].l;
37         }
38         if(cnt==k)break;
39     }
40     if(ans==0)printf("No Answer\n"); 
41     else printf("%d\n",ans);
42     return 0;
43 }

 

口袋的天空

原文:https://www.cnblogs.com/66dzb/p/11188124.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!