题目背景

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

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

给你云朵的个数 N,再给你 M个关系,表示哪些云朵可以连在一起。

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

第一行有三个数 N,M,K。

接下来 M 行每行三个数 X,Y,L表示X云和 Y 云可以通过 L的代价连在一起。
输出格式

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

如果怎么连都连不出 K 个棉花糖,请输出 No Answer。
输入输出样例
输入 #1

3 1 2
1 2 1

输出 #1

1

说明/提示

对于 30%的数据,N≤100,M≤1000

对于 100% 的数据,1≤N≤1000,1≤M≤10000,1≤K≤10 1≤X,Y≤N,0≤L<10000
最主要的是一棵树和多个独立的点与森林相比并不是最优解
Prim是一定生成一棵树,Kruskal是可以生成森林所以此题使用Kruskal

以下是AC代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10;
int n,m,k,x,y,t,l,now=1,head[N],dis[N],minn,ans,tot;
bool vis[N];
int fa[N];
struct node
{int to,nxt,val;
}e[N<<1];
int find(int x)
{if(fa[x]!=x) return fa[x]=find(fa[x]);return x;
}
bool cmp(node x,node y)
{return x.val<y.val;
}
int Kruskal()
{sort(e+1,e+1+m,cmp);for(int i=1;i<=m;i++){int u=find(e[i].nxt),v=find(e[i].to);if(u==v) continue;ans+=e[i].val;fa[u]=v;if(++tot==n-k) return ans;}
}
int main()
{scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=m;i++){scanf("%d%d%d",&e[i].nxt,&e[i].to,&e[i].val);}for(int i=1;i<=n;i++){fa[i]=i;}Kruskal();if(k>n) printf("No Answer");else printf("%d",ans);return 0;
}

洛谷【P1195】口袋的天空相关推荐

  1. 洛谷 P1195 口袋的天空 (题解+代码)

    题目传送门:https://www.luogu.com.cn/problem/P1195 题解: 由于需要有k个棉花糖,则可理解为将云朵分成k个部分. 特判棉花糖大于云朵的数量,此时无解. 那么对于一 ...

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

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

  3. 洛谷 1195 口袋的天空

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

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

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

  5. 【P1195 口袋的天空】

    P1195 口袋的天空 口袋的天空 题目背景 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 提示 题意及分析 放代码 口袋的天空 题目背景 小杉坐在教室里,透过口袋一样的窗 ...

  6. P1195 口袋的天空-Kruskal(优先队列+并查集)

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

  7. 【洛谷】P1195 口袋的天空

    明显看出为最小生成树, 那么:难点在哪里呢? if(cnt==n-k)//******{flag=1;break;} 为什么是cnt==n-k呢而不是k呢?!!! 解释:(如果每个已经连在一起了就不能 ...

  8. P1195 口袋的天空【并查集】

    题目链接 参考题解 有一句话说的是 如果n个点被n-1条边连接的话,这一定是棵树. 那么: 连的边数 得到的树的个数 n-1 1 n-2 2 n-3 3 - - n-k k 所以我们如果想要连出k棵树 ...

  9. 最小生成树——洛谷并查集、口袋的天空

    最小生成树--并查集 简单模板题-洛谷3367并查集 题目描述 如题,现在有一个并查集,你需要完成合并和查询操作. 输入格式 第一行包含两个整数 N,MN,M ,表示共有 NN 个元素和 MM 个操作 ...

  10. 洛谷 深基 第1部分 语言入门 第4章 循环结构程序设计(2022.02.14)

    P5718 [深基4.例2]找最小值 [深基4.例2]找最小值 - 洛谷 P5718 [深基4.例2]找最小值(python3实现)-2022.02.01 P5718 [深基4.例2]找最小值(pyt ...

最新文章

  1. [Silverlight资源]处理bmp,gif及ico图像类文件
  2. 领域驱动设计和实践(转:http://kb.cnblogs.com/page/112298/)
  3. python3 枚举_Python3枚举类如何处理重复名称?
  4. HDU 6446 Tree and Permutation(赛后补题)
  5. 索引体积_第16期:索引设计(MySQL 的索引结构)
  6. GUI编程(一)-----概述
  7. 何万青 | 从天河2号到阿里云超算,P9技术大牛的职业发展智慧
  8. 境外电商-香港汇丰银行基础知识
  9. 论文精读- The Evaluation of the Urban Road Network Based on the Complex Network
  10. 信息学奥赛一本通(C++版)在线评测系统 1161:转进制
  11. windows 下杀手tomcat 进程
  12. win7连接远程服务器特别慢,主编告诉你win7远程桌面连接速度慢的完全解决教程...
  13. 计算机行显示性能调整,win7系统怎么调节为最佳性能模式-win7性能,win7运行速度提高90%...
  14. Eclipse开发工具--使用JDT开发java程序
  15. tensorflow使用GPU加速
  16. 微信小程序微信原生小程序如何通过后端返回的二进制流导出excel文件并保存和转发
  17. booting from hard disk
  18. 基于FPGA的图像处理之幂律(伽马校正)变化
  19. 7个步骤教会你使用领英(LinkedIn)高效开发国外客户
  20. 电商数据分析--流程、方法

热门文章

  1. UCWEB手机浏览器(可以和opera mini 媲美的手机浏览器)
  2. 数论基础----逆元 (数论中的“倒数”)
  3. app服务器指向dat文件,appdat-系统爱好者
  4. DEV C++设置背景音乐
  5. 《C++程序设计》课程设计报告
  6. 【深度好文】谈谈你对MyBatis的理解
  7. 【GitHub】利用Github建立你的个人网站
  8. linux写含输入输出的代码,linux系统管理-输入输出
  9. 百度AI车牌识别测试
  10. 中国最具竞争力的十大调查研究咨询公司