题目传送门:https://www.luogu.com.cn/problem/P1195
题解: 由于需要有k个棉花糖,则可理解为将云朵分成k个部分。
特判棉花糖大于云朵的数量,此时无解。
那么对于一个生成树来说,点为n个,边则有n-1条。如果要想分割成k个部分,需要减去(k-1)条边
即所需要的边为:(n-1)-(k-1) = n-k
也就是对原图进行Kruskal且只连接 n-k 条较小边即可

代码及注释如下:

#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN = 1e3+5;
const int MAXM = 1e4+5;
struct node{int x,y,z;friend bool operator < (node a,node b) {return a.z < b.z;//优先边权小的}
}a[MAXM];
int dis[MAXN];//记录祖先
int getf(int p) {//寻找p的祖先,路径压缩return dis[p]==p?p:dis[p]=getf(dis[p]);
}
int main() {int n,m,k;cin>>n>>m>>k;for(int i = 1;i <= n;i++) dis[i] = i;//初始化祖先为本身!!!for(int i = 1;i <= m;i++) {int x,y,z;cin>>x>>y>>z;a[i] = {x,y,z};//存边}if(k>n) {//棉花糖数量比云朵数量多,无解cout<<"No Answer\n";return 0;}sort(a+1,a+1+m);//排序int ans = 0,num = 0;//ans为结果,num为当前选择的边数for(int i = 1;i <= m;i++) {node tmp = a[i];if(getf(tmp.x)!=getf(tmp.y)) {//还未在生成树中,则连接ans += tmp.z;//添加边权值dis[getf(tmp.x)] = dis[getf(tmp.y)];//向左合并num++;//数量++}if(num==n-k) break;//只需要n-k条边}if(num!=n-k) cout<<"No Answer\n";//不到n-k条,说明无解else cout<<ans;return 0;
}

洛谷 P1195 口袋的天空 (题解+代码)相关推荐

  1. 【洛谷】P1830 轰炸III 题解 代码+详解

    这里是Jane的OJ解答之洛谷系列~ (放假啦 尽量日更叭ε≡٩(๑>₃<)۶ ) 来分享一些算法和题解,一般用的都是C语言,还在学C++ |ू・ω・` ) 如果内容有问题,欢迎大家私信 ...

  2. 洛谷 P1194 买礼物 (题解+代码)

    题目传送门:https://www.luogu.com.cn/problem/P1194 题解: 由于所有东西的价格都为a,并且买个第I个,再买第J个只需要话Kij.那么可以建立最小生成树,连接所有的 ...

  3. 洛谷 1195 口袋的天空 最小生成树 解题报告

    题目背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. 题目描述 给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在 ...

  4. 洛谷 1195 口袋的天空

    传送门 并查集水题. //Twenty #include<algorithm> #include<iostream> #include<cstdlib> #incl ...

  5. P1111 修复公路P1195 口袋的天空

    目录 P1111 修复公路 P1195 口袋的天空 P1111 修复公路 题目链接:https://www.luogu.com.cn/problem/P1111 标签:并查集,最小生成树 思路:本题用 ...

  6. 洛谷P1129 [ZJOI2007] 矩阵游戏 题解

    洛谷P1129 [ZJOI2007] 矩阵游戏 题解 题目链接:P1129 [ZJOI2007] 矩阵游戏 题意:给定一张有黑白棋子的正方形棋盘,问存不存在解法使得经过若干次交换行或列的操作后,左上角 ...

  7. 洛谷P3336 [ZJOI2013]话旧 题解

    洛谷P3336 [ZJOI2013]话旧 题解 题目链接:P3336 [ZJOI2013]话旧 题意:小林跟着银河队选手去了一趟宇宙比赛,耳濡目染,变得学术起来.回来后,他发现世界大变样了.比丘兽究级 ...

  8. 洛谷P4683 [IOI2008] Type Printer 题解

    洛谷P4683 [IOI2008] Type Printer 题解 题目链接:P4683 [IOI2008] Type Printer 题意: 你需要利用一台可移动的打印机打印出NNN个单词.这种可移 ...

  9. 洛谷P4170 [CQOI2007]涂色 题解

    洛谷P4170 [CQOI2007]涂色 题解 题目链接:P4170 [CQOI2007]涂色 题意: 假设你有一条长度为 555 的木板,初始时没有涂过任何颜色.你希望把它的 555 个单位长度分别 ...

最新文章

  1. 2019年上半年收集到的人工智能自动驾驶方向干货文章
  2. 易能变频器说明书故障代码_易能变频器故障代码大全是什么?E013故障是什么?...
  3. svn 代码管理工具
  4. mybatis 配置
  5. html怎么循环输出_for 循环疑难点
  6. dji大疆机器人冬令营_2019高中生机器人夏令营开营 精英高中生汇聚
  7. 新浪微博客户端(eoe)
  8. java 快速io_Java编程在ICPC快速IO实现源码
  9. 一篇文章为你深度解析HTTPS 协议
  10. 论文浅尝 | SenticNet 5: 借助上下文嵌入信息为情感分析发现概念级别的原语
  11. TypeScript -脚本编程语言
  12. linux移动文件 rf参数_linux下文件的复制、移动与删除
  13. php output详解,【PHP】Output Control 扩展详细解读
  14. windows 使用 tree 命令显示目录和文件
  15. 中国省-市-县(区)三级城市数据(json和数组)
  16. NAT类型与P2P游戏
  17. Ubuntu设置Root用户开机启动
  18. 美丽小猪Java基础笔记02【小美女程序猿诞生日记 之 java学习笔记】
  19. 运行uniapp跳转微信开发工具后一直卡在微信开发工具首页的解决方法
  20. 有一些C++基础的同学们如何喝下你的第一杯咖啡?

热门文章

  1. 天刀论剑显示服务器,天涯明月刀天刀论剑怎么进入_天涯明月刀天刀论剑进入方法_快吧游戏...
  2. 2011年度CSDN高校俱乐部“优秀主席”火热出炉
  3. 单线、双线、三线、BGP服务器在使用上的区别?
  4. linux环境JAVA解压zip_Linux文件解压缩详解
  5. 高颜值 Markdown 编辑器(GitHub 标星 17.5 K)
  6. 最好的乳胶枕头ventry T3
  7. 20210518第一天
  8. 【胖虎的逆向之路】01——动态加载和类加载机制详解
  9. Linux应用(二)多进程编程
  10. Spark-Shell 及 Spark-Submit