题目传送门: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. 删库跑路大神「后悔」了?我只不过犯了大家都会犯的编程错误!
  2. Maven学习总结(七)——eclipse中使用Maven创建Web项目
  3. VC 中字符串比较和查找
  4. Android中shape的使用
  5. nivicat复制mysql数据库[Err] [Dtf] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'错误
  6. 企服创业必修课丨神策数据与红杉中国联合发布规模化营销获客体系建设指南...
  7. 微型计算机原理及应用程序题,郑学坚《微型计算机原理及应用》(第4版)笔记和课后习题详解...
  8. 编译Android版本TensorFlow
  9. 剖析Caffe源码之Layer
  10. 路由模式 -- ADSL账号密码拨号
  11. 自己服务器搭建免费的进销存系统,云进销存服务器搭建
  12. ps怎么更改背景图层大小_Photoshop怎么改变(缩小)图片尺寸大小
  13. Windows, 使用https访问网页提示此网站的安全证书有问题解决方法
  14. 梯形断面正常水深莫洛图
  15. cearte-react-app中craco中优雅引入svg【自定义宽、高、颜色,仅需5步】
  16. python中文分句_中文文本分句
  17. 工具提取MP4中的音视频
  18. 阿里云课堂·云安全·Web应用安全认知(笔记)
  19. POJ 3237 Tree (树链剖分 路径剖分 线段树的lazy标记)
  20. java获取IP地址

热门文章

  1. svg中path图形自适应_制作自己的自适应SVG图形和图表
  2. Android 合并清单文件 Merge multiple manifest files
  3. 大学计算机文化基础在哪上,大学计算机文化基础关于.pdf
  4. 9.面向对象、面向对象-原型模式
  5. 北漂那么多程序员,到了35岁以后该怎么选择往后的路?
  6. 【python】小技巧-判断一个字典中是否包含另一个字典的值,即实际结果中是否包含预期结果
  7. HTML5期末大作业:旅游网站设计——蓝色的地方旅游门户(9页) HTML+CSS+JavaScript
  8. 移动软件技术——Activity(1)
  9. 使用 zx 编写在 Node 中编写 Bash 脚本
  10. Rundeck基础:3:基础概念:操作Project