题目:http://www.gdfzoj.com/oj/contest/276/problems/2

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

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

现在给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在一起。小杉要把所有云朵连成K个棉花糖,一个棉花糖最少要用掉一朵云,小杉想知道他怎么连,花费的代价最小。

解释一下题目:(一开始连题目都没看懂)

首先由n朵云,即n个集合,要你通过连接云来合并集合最终得到k个集合,求其代价和(连接云有代价)最小值

这么一说,合并次数不就是n-k次咯?!

然后对于每一次合并,不就尽可能取最小的边?但又不能连“无用”边

那不就是 最小生成树 kruskal吗?

打一打顺便复习kruskal。。。开心~(原来kruskal是并查集呀,我这才知道)

#include <cstdio>
#include <algorithm>
#include <cstring>using namespace std;struct node
{int u,v,w;
};const int maxS=10000;
node edge[maxS+5];
int n,m,k;
int a[maxS+5];bool cmp(node x,node y)
{if (x.w==y.w)return x.u<y.u;elsereturn x.w<y.w;
}int find(int x)
{int fu,x1;if (a[x]==x)return x;elsefu=x;while (a[fu]!=fu)fu=a[fu];while (a[x]!=fu){x1=a[x];a[x]=fu;x=x1;}return fu;
}void kruskal()
{int i=1,tot=0,ans=0,fx,fy;while (tot<n-k){fx=find(edge[i].u);   fy=find(edge[i].v);if (fx!=fy){a[fx]=fy;ans+=edge[i].w;    tot++;}i++;if (i>m)break;}if (tot<n-k)printf("No Answer\n");elseprintf("%d\n",ans);
}int main()
{int i;freopen("a.txt","r",stdin);scanf("%d%d%d",&n,&m,&k);for (i=1;i<=m;i++)scanf("%d%d%d",&edge[i].u,&edge[i].v,&edge[i].w);sort(edge+1,edge+m+1,cmp);for (i=1;i<=n;i++)a[i]=i;kruskal();return 0;
}

gfoj 口袋的天空相关推荐

  1. 【P1195 口袋的天空】

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

  2. 【c++图论】【口袋的天空】【部落划分】

    目标: 今天的两道题做法和思路有相同之处,合并在一起学习可以帮助更快的掌握图论中克鲁斯卡尔算法的要点和据具体实现步骤,下面来看看题目: 第一题[口袋的天空] 题目如下 题目背景 小杉坐在教室里,透过口 ...

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

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

  4. 张韶涵《口袋的天空》小提琴谱片段

    很喜欢张韶涵<口袋的天空>这首歌,每次听感觉都很好.中间有一段小提琴的乐曲,听着特别感人. 找了很久的<口袋的天空>的小提琴谱,一直没有找到,终于有一次找到了这段小提琴谱,2分 ...

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

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

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

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

  7. VIJOS【1234】口袋的天空

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

  8. 问题 H: 口袋的天空(Kruscal)

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

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

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

最新文章

  1. Node和java和php,服务端I/O性能大比拼:Node、PHP、Java和Go(三)
  2. 全网最详细的大数据集群环境下如何正确安装并配置多个不同版本的Cloudera Hue(图文详解)...
  3. 基于消息的分布式架构设计
  4. 终于买了个Dell d400二手笔记本
  5. iOS中几种定时器 - 控制了时间,就控制了一切
  6. Android 小项目之--数据存储【Files】(附源码)
  7. leetcode - Interleaving String
  8. X86汇编语言从实模式到保护模式07:硬盘和显卡的访问控制
  9. sql server 视图_SQL Server –具有引用视图的开发实践
  10. 深入理解Nginx及使用Nginx实现负载均衡
  11. Unity引擎与Cocos引擎的区别
  12. 使用fsck修复损坏磁盘
  13. adb connect连接手机失败的解决办法
  14. 微信“开放”第三天,互联网有什么不一样?
  15. kubernetes源码剖析读后感(二)
  16. Android使用GoogleMap实现定位与路径检索功能
  17. HTML-form表单
  18. IDM 下载器 使用记录
  19. 张量分解浅谈(四 Tucker 分解)
  20. 【NOIP模拟赛】七夕祭(环形均分纸牌)

热门文章

  1. manifest引用build中的变量
  2. MODIS数据所有产品介绍与下载地址
  3. 【Prism系列】Prism子窗口实现
  4. spring配置读取properties文件
  5. 怎样翻译文本?这三种翻译方法我经常使用
  6. java异常类中属于非检测异常的是_下列java语言的常用异常类中,属于检测异常的是()_学小易找答案...
  7. 单线、双线、三线、BGP服务器在使用上的区别?
  8. 逆风飞扬 吴士宏_打工女皇吴士宏:从初中辍学的患癌小护士到微软中国总经理...
  9. VMware vRealize Operations Manager Appliance Install
  10. 图文解决系列之解决Submit including parents