华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 941|回复: 1
打印 上一主题 下一主题

P1195 口袋的天空

[复制链接]

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
跳转到指定楼层
楼主
发表于 2018-7-4 08:54:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
https://www.luogu.org/problemnew/show/P1195

题目背景
小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空。

有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖。

题目描述
给你云朵的个数 NN ,再给你 MM 个关系,表示哪些云朵可以连在一起。

现在小杉要把所有云朵连成 KK 个棉花糖,一个棉花糖最少要用掉一朵云,小杉想知道他怎么连,花费的代价最小。

输入输出格式
输入格式:
每组测试数据的

第一行有三个数 N,M,K(1 \le N \le 1000,1 \le M \le 10000,1 \le K \le 10)N,M,K(1≤N≤1000,1≤M≤10000,1≤K≤10)

接下来 MM 个数每行三个数 X,Y,LX,Y,L ,表示 XX 云和 YY 云可以通过 LL 的代价连在一起。 (1 \le X,Y \le N,0 \le L<10000)(1≤X,Y≤N,0≤L<10000)

30\%30% 的数据 N \le 100,M \le 1000N≤100,M≤1000

输出格式:
对每组数据输出一行,仅有一个整数,表示最小的代价。

如果怎么连都连不出 KK 个棉花糖,请输出'No Answer'。

输入输出样例
输入样例#1:
3 1 2
1 2 1
输出样例#1:
1
说明
厦门一中YMS原创

回复

使用道具 举报

9

主题

158

帖子

470

积分

华一学生

积分
470
QQ
沙发
发表于 2018-8-28 22:17:29 | 只看该作者
  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. int n,m,k;
  5. long long ans;
  6. int f[1001];
  7. struct clouds
  8. {
  9.     int x,y,s;
  10. } a[10001];
  11. bool operator< (clouds p,clouds q)
  12. {
  13.     return p.s<q.s;
  14. }
  15. int getf(int x)
  16. {
  17.     if(x==f[x])return x;
  18.     f[x]=getf(f[x]);
  19.     return f[x];
  20. }
  21. void merge(int a,int b)
  22. {
  23.     int aa=getf(a);
  24.     int bb=getf(b);
  25.     f[aa]=bb;
  26. }
  27. int main()
  28. {
  29.     while(cin>>n>>m>>k)
  30.     {
  31.         for(int i=1; i<=m; i++)cin>>a[i].x>>a[i].y>>a[i].s;
  32.         for(int i=1; i<=n; i++)f[i]=i;
  33.         if(n<k||n-m>k)cout<<"No Answer"<<endl;
  34.         else
  35.         {
  36.             sort(a+1,a+m+1);
  37.             int num=n;
  38.             for(int t=1;t<=m;t++)
  39.                 if(num==k)break;
  40.                 else if(getf(a[t].x)!=getf(a[t].y))
  41.                 {
  42.                     ans+=a[t].s;
  43.                     merge(a[t].x,a[t].y);
  44.                     num--;
  45.                 }
  46.             cout<<ans<<endl;
  47.         }
  48.     }
  49.     return 0;
  50. }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-11-2 02:25 , Processed in 0.134641 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表