MST:Bad Cowtractors(POJ 2377)
坏的牛圈建筑
题目大意:就是现在农夫又要牛修建牛栏了,但是农夫想不给钱,于是牛就想设计一个最大的花费的牛圈给他,牛圈的修理费用主要是用在连接牛圈上
这一题很简单了,就是找最大生成树,把Kruskal算法改一下符号就好了,把边从大到小排列,然后最后再判断是否联通(只要找到他们的根节点是否相同就可以了!)
1 #include <iostream> 2 #include <algorithm> 3 #include <functional> 4 #define MAX_N 1005 5 #define MAX 20005 6 7 using namespace std; 8 9 typedef int Position; 10 typedef struct _edge 11 { 12 Position from; 13 Position to; 14 int cost; 15 }Edge_Set; 16 int fcomp(const void *a, const void *b) 17 { 18 return (*(Edge_Set *)b).cost - (*(Edge_Set *)a).cost; 19 } 20 21 static Edge_Set edge[MAX]; 22 static Position Set[MAX_N]; 23 24 Position Find(Position); 25 void Union(Position, Position); 26 void Kruskal(const int, const int); 27 bool Is_Connected(const int); 28 29 int main(void) 30 { 31 int Node_Sum, Path_Sum, cost; 32 Position tmp_from, tmp_to; 33 34 while (~scanf("%d%d", &Node_Sum, &Path_Sum)) 35 { 36 for (int i = 0; i < Path_Sum; i++)//读入边 37 { 38 scanf("%d%d%d", &tmp_from, &tmp_to, &cost); 39 edge[i].from = tmp_from; edge[i].to = tmp_to; edge[i].cost = cost; 40 } 41 qsort(edge, Path_Sum, sizeof(Edge_Set), fcomp); 42 Kruskal(Node_Sum, Path_Sum); 43 } 44 return 0; 45 } 46 47 Position Find(Position x) 48 { 49 if (Set[x] < 0) 50 return x; 51 else return Set[x] = Find(Set[x]); 52 } 53 54 void Union(Position px, Position py) 55 { 56 if (Set[px] < Set[py]) 57 { 58 Set[px] += Set[py]; 59 Set[py] = px; 60 } 61 else 62 { 63 Set[py] += Set[px]; 64 Set[px] = py; 65 } 66 } 67 68 bool Is_Connected(const int Node_Sum) 69 { 70 Position p_u, p_tmp; 71 p_u = Find(1); 72 for (int i = 2; i <= Node_Sum; i++) 73 { 74 p_tmp = Find(i); 75 if (p_u != p_tmp) 76 return false; 77 } 78 return true; 79 } 80 81 void Kruskal(const int Node_Sum, const int Path_Sum) 82 { 83 Position px, py, from, to; 84 long long ans = 0; 85 86 fill(Set, Set + Node_Sum + 1, -1); 87 for (int i = 0; i < Path_Sum; i++) 88 { 89 from = edge[i].from; to = edge[i].to; 90 px = Find(from); py = Find(to); 91 92 if (px != py) 93 { 94 ans += edge[i].cost; 95 Union(px, py); 96 } 97 } 98 if (Is_Connected(Node_Sum)) 99 printf("%lld\n", ans); 100 else 101 printf("-1\n"); 102 }
转载于:https://www.cnblogs.com/Philip-Tell-Truth/p/4955944.html
MST:Bad Cowtractors(POJ 2377)相关推荐
- 【POJ - 2377】Bad Cowtractors (最大生成树,并查集)
题干: Bessie has been hired to build a cheap internet network among Farmer John's N (2 <= N <= 1 ...
- (poj 2377)Kruskal算法 最大生成树
这道题只是一道模板题,感到唯一的坑点就是n,m容易打错,一定要注意结构体要开到Max(M)+n; 之前便是因为这个地方Runtime Error了两次;顺便注意最后输出的答案 为long long型 ...
- 挑战程序设计竞赛(第二章习题总结)
文章目录 搜索 Curling 2.0(POJ 3009) Meteor Shower(POJ 3669) Smallest Difference(POJ 2718) Hopscotch(POJ 30 ...
- POJ 图论---1_Uriel's Corner Uriel's Coding Learning Cubing Zone
原文地址: http://www.cppblog.com/Uriel/articles/121814.html 内容: 刚开始学图论不久,这个是自己做过的一点图论水题,不一定全,有什么错误或者大家有其 ...
- 《挑战程序设计竞赛(第2版)》习题册攻略
本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...
- 2019.9.18最小生成树知识点总结
HDU 4081 Qin Shi Huang's National Road System(次小生成树-Kruskal) 博主的方法很好,但是有疑问,为什么不能将最多人口的两城市的距离设置为0,在进行 ...
- 2019.9.17最小生成树知识点回顾
POJ 1797 Heavy Transportation(最大生成树-Prim) 最大生成树,方法模仿最小生成树,每次选最大边进行操作,即可. HDU 5723 Abandoned country( ...
- 【POJ】2377 Bad Cowtractors(最大生成树)
简单题,模板题 求解最大生成树,提交一直WA,感觉没有什么问题啊,就是在求解最小生成树的模板基础上稍加修改即可,后来发现在输出a,b,c给map二维数组的时候还必须有判断条件,略为有点坑,因为之前做的 ...
- POJ 1679 The Unique MST(次小生成树)
求次小生成树的两种方法. 第一种:Kruskal算法比较好操作.先求一遍最小生成树,然后再记录最小生成树上的边.然后再枚举删去最小生成树上的边,再求最小生成树,如果求出的最小生成树的花费等于第一次最小 ...
最新文章
- 确认AD DS域是否正常
- 黑马lavarel教程---10、lavarel模型关联
- 嵌入式系统中系统时间显示
- tab与list配合使用
- 《Adobe Photoshop大师班:经典作品与完美技巧赏析》即将上市
- 多语言 获取当前语言
- 使用ASP.NET Core和Entity Framework Core实现Angular 7 SPA CRUD
- Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十五)
- eclipse中设置java注释模板
- 47 Majority Element II
- 团队作业—第二阶段08
- centos Install Docker
- 科技圈晒开工福利!小米最直接,腾讯最传统,阿里最豪气,你们家的呢?
- Mac Appium 安装
- PDF有编辑密码怎么办?该怎么去除
- 5.1 Lilypond五线谱
- 【ADNI】数据预处理(3)CNNs
- MySQL——页和索引
- 前端的长度单位有哪些
- 360漏洞修复的提取
热门文章
- PropertyGrid 控件使用方法
- 7.25第一次组队赛
- [工具库]JFileDownloader工具类——多线程下载网络文件,并保存在本地
- 用js实现导航栏shoufang效果_【读者投稿】用Github+docsify,我花了半天就搭好了个人博客...
- echarts 弹出放大_Echarts图标增加全屏/放大功能
- AUTOSAR从入门到精通100讲(三十五)-AUTOSAR BswM三部曲-概念实践代码分析
- 计算机ip地址未修复连接不了无线网络,本地连接没有有效的ip配置,教您修复本地连接没有有效的ip配置...
- H5工程师在谷歌浏览器调试并开发原生APP项目的解决办法
- 有什么好一点的方法读jdk源码吗?
- 各大银行对应的字段(仅做参考)