洛谷【P1195】口袋的天空
题目背景
小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空。
有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖。
题目描述
给你云朵的个数 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】口袋的天空相关推荐
- 洛谷 P1195 口袋的天空 (题解+代码)
题目传送门:https://www.luogu.com.cn/problem/P1195 题解: 由于需要有k个棉花糖,则可理解为将云朵分成k个部分. 特判棉花糖大于云朵的数量,此时无解. 那么对于一 ...
- 洛谷 1195 口袋的天空 最小生成树 解题报告
题目背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. 题目描述 给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在 ...
- 洛谷 1195 口袋的天空
传送门 并查集水题. //Twenty #include<algorithm> #include<iostream> #include<cstdlib> #incl ...
- P1111 修复公路P1195 口袋的天空
目录 P1111 修复公路 P1195 口袋的天空 P1111 修复公路 题目链接:https://www.luogu.com.cn/problem/P1111 标签:并查集,最小生成树 思路:本题用 ...
- 【P1195 口袋的天空】
P1195 口袋的天空 口袋的天空 题目背景 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 提示 题意及分析 放代码 口袋的天空 题目背景 小杉坐在教室里,透过口袋一样的窗 ...
- P1195 口袋的天空-Kruskal(优先队列+并查集)
口袋的天空 题目背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. 题目描述 给你云朵的个数 N N N,再给你 M M ...
- 【洛谷】P1195 口袋的天空
明显看出为最小生成树, 那么:难点在哪里呢? if(cnt==n-k)//******{flag=1;break;} 为什么是cnt==n-k呢而不是k呢?!!! 解释:(如果每个已经连在一起了就不能 ...
- P1195 口袋的天空【并查集】
题目链接 参考题解 有一句话说的是 如果n个点被n-1条边连接的话,这一定是棵树. 那么: 连的边数 得到的树的个数 n-1 1 n-2 2 n-3 3 - - n-k k 所以我们如果想要连出k棵树 ...
- 最小生成树——洛谷并查集、口袋的天空
最小生成树--并查集 简单模板题-洛谷3367并查集 题目描述 如题,现在有一个并查集,你需要完成合并和查询操作. 输入格式 第一行包含两个整数 N,MN,M ,表示共有 NN 个元素和 MM 个操作 ...
- 洛谷 深基 第1部分 语言入门 第4章 循环结构程序设计(2022.02.14)
P5718 [深基4.例2]找最小值 [深基4.例2]找最小值 - 洛谷 P5718 [深基4.例2]找最小值(python3实现)-2022.02.01 P5718 [深基4.例2]找最小值(pyt ...
最新文章
- [Silverlight资源]处理bmp,gif及ico图像类文件
- 领域驱动设计和实践(转:http://kb.cnblogs.com/page/112298/)
- python3 枚举_Python3枚举类如何处理重复名称?
- HDU 6446 Tree and Permutation(赛后补题)
- 索引体积_第16期:索引设计(MySQL 的索引结构)
- GUI编程(一)-----概述
- 何万青 | 从天河2号到阿里云超算,P9技术大牛的职业发展智慧
- 境外电商-香港汇丰银行基础知识
- 论文精读- The Evaluation of the Urban Road Network Based on the Complex Network
- 信息学奥赛一本通(C++版)在线评测系统 1161:转进制
- windows 下杀手tomcat 进程
- win7连接远程服务器特别慢,主编告诉你win7远程桌面连接速度慢的完全解决教程...
- 计算机行显示性能调整,win7系统怎么调节为最佳性能模式-win7性能,win7运行速度提高90%...
- Eclipse开发工具--使用JDT开发java程序
- tensorflow使用GPU加速
- 微信小程序微信原生小程序如何通过后端返回的二进制流导出excel文件并保存和转发
- booting from hard disk
- 基于FPGA的图像处理之幂律(伽马校正)变化
- 7个步骤教会你使用领英(LinkedIn)高效开发国外客户
- 电商数据分析--流程、方法