畅通工程(并查集模版题)
题意:
多组输入N,M,当N为0退出人输入,N是道路数目,M是村庄总数,随后N行,每行输入三个数两个村庄的编号,以及连接这两个村庄的费用。
对每一组数据输出畅通工程的最低费用,如果不能畅通就输出“?”(不包括双引号)
这道题有两道链接:
一道是fjut的链接,另外一道是hdu的
http://www.fjutacm.com/Problem.jsp?pid=1214
http://acm.hdu.edu.cn/showproblem.php?pid=1863
思路:其实这道题就是一道排序+并查集题,将每条路的费用进行排序然后依次合并,然后费用增加,当N中情况都试过了,再来一个循环判断是否全部连接。
好啦,我们来看AC代码吧:
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<string.h>
using namespace std;
int fa[105];
struct node//定义这个结构体,a代表的是一个村庄的编号,b代表的是另一个村庄的编号,cost顾名思义
{int a;int b;int cost;
};
int find(int x)
{int r=x,temp;while(r!=fa[r])r=fa[r];while(x!=fa[x]){temp=fa[x];fa[x]=r;x=temp;}return x;
}
bool cmp(node x,node y)//cmp排序
{return x.cost<y.cost;
}
int main(void)
{int n,m;node cp[500];while(cin>>n>>m&&n){int sum=0;for(int i=1;i<=m;i++)fa[i]=i;for(int i=1;i<=n;i++){cin>>cp[i].a>>cp[i].b>>cp[i].cost;}sort(cp+1,cp+n+1,cmp);//排序 for(int i=1;i<=n;i++)//这个循环开始处理费用 {int x=find(cp[i].a);int y=find(cp[i].b);if(x!=y){fa[y]=x;sum+=cp[i].cost;}}int k=find(1);int flag=1;for(int i=1;i<=m;i++)//这个循环检查是否村子都连接 {if(k!=find(i)){flag=0;break;}}if(flag)cout<<sum<<endl;elsecout<<'?'<<endl;
}
return 0;
}
小结一下:这道题也算一道模版题吧,只不过可能开始有点难想,为什么要对费用排序,骑士想通了就觉得很简单,sort的自定义排序我也学了一波还是挺好用的,cmp的用法,待会我会另外写一篇博客,以供大家学习。
畅通工程(并查集模版题)相关推荐
- ACM: 畅通工程-并查集-解题报告
畅通工程 Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description某省调查城镇交通状况, ...
- PIPI OJ 1118: 继续畅通工程(并查集+最小生成树)
菜鸟生成记(18) 1118: 继续畅通工程 又双叒叕是最短路径的水题;不同的是,在构造最小生成树前,题目中已经规定一些已经建好了(这些边已经在生成树里面了);从未建好的边中选择最优边加入生成树;直到 ...
- NYOJ 608 畅通工程 并查集
畅通工程 时间限制:2000 ms | 内存限制:65535 KB 难度:3 描述 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程&qu ...
- 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)
题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有 ...
- 畅通工程---并查集
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- ACM-NEFUOJ-P210畅通工程并查集
题目:我已经明示到这个程度了你还不用并查集? #include<bits/stdc++.h>using namespace std;const int MAXN=1010;int F[MA ...
- HDU 1232 -畅通工程(并查集)
题目 http://acm.hdu.edu.cn/showproblem.php?pid=1232 代码 #include <iostream> #include <algorith ...
- PAT题解-1118. Birds in Forest (25)-(并查集模板题)
如题... #include <iostream> #include <cstdio> #include <algorithm> #include <stri ...
- 【SCAU 新生赛】18247 aler的旅游计划 并查集模板题
18247 aler的旅游计划 该题有题解 时间限制:1000MS 代码长度限制:10KB 提交次数:15 通过次数:0 收入:10 题型: 编程题 语言: 不限定 Description aler想 ...
最新文章
- 清除administrator密码 方法
- hive数据库numeric_hive支持sql大全(收藏版)
- SSISDB6:参数和环境变量
- 刷leetcode第705题- 设计哈希集合
- 【STM32】FreeRTOS编码风格
- find 是区分大小写的。对于不区分大小写的写法(转载)
- 《Effective Java》 第一讲:创建和销毁对象
- Dubbo(九) dubbo的配置文件加载顺序优先级
- c++字符数组整数转换中文大写金额的形式_数字大写转换烦,内置格式多缺陷, VBA函数来解难...
- 但愿Fedora 10有Ubuntu Wubi安置遵命
- java中hashset_Java HashSet – Java中的HashSet
- CDP营销方案 不仅仅是数据整合
- 24V转5V降压芯片,24V转3.3V的稳压芯片,中文规格书
- TLD文件自定义标签
- 软件测试(敏捷开发、迭代模型)
- 1e9个兵临城下 - 容斥原理
- uint16数据的读取以及转换为uint8数据显示
- Android OpenGL ES(十一):绘制一个20面体
- 惠普总裁关于职业规划的讲座
- BAT批处理文本替换
热门文章
- 电脑一开机内存(共8G)就用了70%以上,任务管理器里面查看没有占用内存很高的进程
- win10 通过xrdp远程连接到ubuntu后,显示顶端快捷工具栏,显示最小化后的应用
- Dynamics CRM 2015/2016 Web API:Unbound Custom Action 和 Bound Custom Action
- PHP字符串替换函数strtr()的功能实现讲解
- datetime使用
- Python BFS 提取二值图联通域
- C# vs MySql
- 关于web页面打开空白的情况
- C#反射Assembly 详细说明
- linux系统监控、诊断工具摘录top IO wait lsof