口袋的天空(Kruscal)
题目描述
小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空。
有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖。
给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在一起。
现在小杉要把一些云朵连在一起,做成K个棉花糖,一个棉花糖最少要用掉一朵云,小杉想知道他怎么连,花费的代价最小。
输入
每组测试数据的 第一行有三个数N,M,K(1<=N<=1000,1<=M<=10000,1<=K<=10) 接下来M个数每行三个数X,Y,L,表示X云和Y云可以通过L的代价连在一起。(1<=X,Y<=N,0<=L<10000) 30%的数据N<=100,M<=1000
输出
对每组数据输出一行,仅有一个整数,表示最小的代价。 如果怎么连都连不出K个棉花糖,请输出’No Answer’。
样例输入
3 1 2
1 2 1
样例输出
1
题解
import java.util.Arrays;
import java.util.Scanner;
public class Main{static Scanner sc=new Scanner(System.in);static class Node implements Comparable<Node>{int x,y,l;Node(int x,int y,int l){this.x=x;this.y=y;this.l=l;}@Overridepublic int compareTo(Node o) {return this.l-o.l;}}public static void main(String[] args) {while(sc.hasNext()){int n=sc.nextInt(),m=sc.nextInt(),k=sc.nextInt();Node[] node=new Node[m];for(int i=0;i<m;i++){node[i]=new Node(sc.nextInt(),sc.nextInt(),sc.nextInt());}if(k>n){System.out.println("No Answer");continue;}if(k==n){System.out.println("0");continue;}Arrays.sort(node);if(!Kruscal(node,n,m,k))System.out.println("No Answer");}sc.close();}static int count,cost;private static boolean Kruscal(Node[] node, int n, int m,int k) {int[] flag=new int[n+1];for(int i=1;i<=n;i++)flag[i]=i;count=n;cost=0;for(int i=0;i<m;i++){merge(node[i].x,node[i].y,node[i].l,flag);if(count==k) {System.out.println(cost);return true;}}return false;}private static int find(int[] flag,int a){if(a!=flag[a])flag[a]=find(flag,flag[a]);return flag[a];}private static void merge(int a,int b,int c,int[] flag){int fa=find(flag,a);int fb=find(flag,b);if(fa!=fb){flag[fa]=fb;count--;cost+=c;}}
}
相关
口袋的天空(Kruscal)相关推荐
- 问题 H: 口袋的天空(Kruscal)
题目描述 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. 给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在一起. 现 ...
- 【P1195 口袋的天空】
P1195 口袋的天空 口袋的天空 题目背景 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 提示 题意及分析 放代码 口袋的天空 题目背景 小杉坐在教室里,透过口袋一样的窗 ...
- 【c++图论】【口袋的天空】【部落划分】
目标: 今天的两道题做法和思路有相同之处,合并在一起学习可以帮助更快的掌握图论中克鲁斯卡尔算法的要点和据具体实现步骤,下面来看看题目: 第一题[口袋的天空] 题目如下 题目背景 小杉坐在教室里,透过口 ...
- 最小生成树——洛谷并查集、口袋的天空
最小生成树--并查集 简单模板题-洛谷3367并查集 题目描述 如题,现在有一个并查集,你需要完成合并和查询操作. 输入格式 第一行包含两个整数 N,MN,M ,表示共有 NN 个元素和 MM 个操作 ...
- 张韶涵《口袋的天空》小提琴谱片段
很喜欢张韶涵<口袋的天空>这首歌,每次听感觉都很好.中间有一段小提琴的乐曲,听着特别感人. 找了很久的<口袋的天空>的小提琴谱,一直没有找到,终于有一次找到了这段小提琴谱,2分 ...
- P1111 修复公路P1195 口袋的天空
目录 P1111 修复公路 P1195 口袋的天空 P1111 修复公路 题目链接:https://www.luogu.com.cn/problem/P1111 标签:并查集,最小生成树 思路:本题用 ...
- P1195 口袋的天空-Kruskal(优先队列+并查集)
口袋的天空 题目背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. 题目描述 给你云朵的个数 N N N,再给你 M M ...
- VIJOS【1234】口袋的天空
背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. 描述 给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在一起. ...
- gfoj 口袋的天空
题目:http://www.gdfzoj.com/oj/contest/276/problems/2 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那 ...
- 洛谷 1195 口袋的天空 最小生成树 解题报告
题目背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. 题目描述 给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在 ...
最新文章
- 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 3
- python实现多进程同时计算_python多进程实现CPU100%使用
- 拥抱开放计算标准 重构数据中心格局
- 下一代微服务(service Mesh)
- JAVA程序设计----集合基础之Map
- 迈克尔 杰克逊mv_杰克逊JSON解析错误– UnrecognizedPropertyException:无法识别的字段,未标记为可忽略[已解决]...
- 第2章 状态机思维与状态机变量
- 【数据库系统】笛卡尔积与自然连接
- python处理excel的方法有哪些_Python操作Excel简单方法
- vss登录invalid handle问题的解决办法
- Bzoj 3339: Rmq Problem Bzoj 3585: mex 莫队,树状数组,二分
- 2021-03-14
- ActiveMQ 持久化
- QQ游戏大厅的你画我猜游戏白屏问题解决
- web前端开发面试题-基础篇
- 基于GD库的php验证码类(支持中英文字体、背景、干扰点线、扭曲…….)
- 实时展示摄像头内容(go server + electron-vue client)
- 解决tensorflow下载速度慢
- 2023年直播行业的困境是什么?未来有哪些发展趋势?
- CVPR2021目标检测方向论文
热门文章
- vue 中使用 vue-amap(高德地图) 【'AMapUI' is not defined 】
- 使用Echarts制作散点图
- 女性三围--表单只能输入数字和英文输入下的逗号
- 图片上传File对象不兼容IE
- php 依赖安装顺序6,构建PHP框架:第6部分-依赖倒置,控制倒置,哦,天哪!
- Limelight完成了对雅虎Edgecast的收购,合并后的公司更名为Edgio,成为全球边缘解决方案的领导者
- bus error的解决方法
- 迅雷调用Potplayer边下边播
- 信道容量迭代算法验证
- notification 发送通知后顶栏的小图标不对,为纯白色而不是设置的smallIcon 的原因