HDU 1232 并查集板子题
Input测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M;随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号。为简单起见,城镇从1到N编号。
注意:两个城市之间可以有多条道路相通,也就是说
3 3
1 2
1 2
2 1
这种输入也是合法的
当N为0时,输入结束,该用例不被处理。
Output对每个测试用例,在1行里输出最少还需要建设的道路数目。
Sample Input
- 4 2
- 1 3
- 4 3
- 3 3
- 1 2
- 1 3
- 2 3
- 5 2
- 1 2
- 3 5
- 999 0
- 0
Sample Output
- 1
- 0
- 2
- 998
- Huge input, scanf is recommended.
- 并查集的板子题
- ans 一开始应该要初始化为n-1, n个点之间连接只需要n-1条道路
每在两个点之间加入新的道路就 ans --
- #include<cstdio>
- #include<cstring>
- using namespace std;
- int pre[], ans;
- int father(int root){
- int son = root, tmp;
- while(root != pre[root])
- root = pre[root];
- while(son != root){
- tmp = pre[son];
- pre[son] = root;
- son = tmp;
- }
- return root;
- }
- void add(int x,int y){
- int a = father(x);
- int b = father(y);
- if(pre[a]!=pre[b]){
- pre[a] = b;
- ans --;
- }
- }
- int main(){
- int n, m, x, y;
- while(scanf("%d%d",&n,&m)==){
- ans = n - ;
- for(int i=;i<=n;i++)
- pre[i] = i;
- for(int i=;i<m;i++){
- scanf("%d%d",&x,&y);
- if(pre[x] == pre[y])
- continue;
- add(x,y);
- }
- printf("%d\n",ans);
- }
- return ;
- }
HDU 1232 并查集板子题的更多相关文章
- 畅通工程 HDU - 1232 并查集板子题
#include<iostream> #include<cstring> using namespace std; ; int p[N]; int find(int x) { ...
- HDU 1232 并查集/dfs
原题: http://acm.hdu.edu.cn/showproblem.php?pid=1232 我的第一道并查集题目,刚刚学会,我是照着<啊哈算法>这本书学会的,感觉非常通俗易懂,另 ...
- HDU 1232 - 并查集 解题报告
畅通project Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- hdu 1213(并查集模版题)
How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- Zjnu Stadium HDU - 3047 带权并查集板子题
#include<iostream> #include<cstring> #include<cstdio> using namespace std; +; int ...
- CodeForces 893C (并查集板子题)
刷题刷到自闭,写个博客放松一下 题意:n个人,m对朋友,每寻找一个人传播消息需要花费相应的价钱,朋友之间传播消息不需要花钱,问最小的花费 把是朋友的归到一起,求朋友中花钱最少的,将所有最少的加起来. ...
- HDU 1232 并查集
畅通工程 Time ...
- HDU 1213(并查集)
How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- hdu1213 并查集板子
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1213/ 并查集是一种支持合并与查找的数据结构,在森林中进行操作,加上路径压缩,合并和查找的时间复杂度几乎都是常数 ...
随机推荐
- Oracle中按规定的字符截取字符串
CREATE OR REPLACE FUNCTION "F_SPLIT" (p_str IN CLOB, p_delimiter IN VARCHAR2) RETURN ty_st ...
- 时间比较方法DateTime.Compare
格式:DateTime.Compare(datetime1, datetime2) 参数为时间格式,为第一个参数比较第二个参数,返回小于0的值,等于0或大于0的值. 实例: string st1 = ...
- MySQL数据导入导出(一)
今天遇到一个需求,要用自动任务将一张表的数据导入另一张表.具体场景及限制:将数据库A中表A的数据导入到数据库B的表B中(增量数据或全量数据两种方式):体系1和体系2只能分别访问数据库A和数据库B.附图 ...
- vue组件间传值详解
1.父传子----传值要点: <1> 在组件注册的时候必须要使用 return 去返回 data对象;
- Java代码注释
单行注释: 选中代码,按下ctrl+/ 一条代码单行注释:选中一条代码按下ctrl+/,则为一条代码单行注释: 多条代码单行注释:选中多条代码按下ctrl+/,则为多条代码单行注释: 取消注释:对已经 ...
- Yii中实现分页
$criteria = new CDbCriteria(); // 查询字段 $criteria->select = 'id, name, create_time'; // 排序 $criter ...
- mongodb rebo 3T 执行出错 failed to execute script 但是执行成功 171条
我现在也不清楚到底是什么原因 解决方法: 把你要执行的脚本保存到文件 在最上面添加下面两行代码:根据你的数据库 信息填写 conn = new Mongo('host:port'); db = con ...
- linux 操作系统之磁盘管理
磁盘管理 存储设备:硬盘 , U盘 , 移动硬盘 , 光盘 , 软件. 组装一台电脑 无法被修改 df -h #查看磁盘分区的情况 , 可用的. 查看磁盘或者目录的内容 df “df” 常用的 “-i ...
- 理解Linux系统调用
目录 1.什么是系统调用 2.linux的系统调用 3.linux系统调用实现 1.什么是系统调用 系统调用,指的是操作系统提供给用户程序调用的一组特殊接口,用户程序可以根据这组接口获得操作系统内核的 ...
- pymyspl模块
pymysql的下载和使用 该模块本质就是一个套接字客户端软件,使用前需要事先安装,能够让我们在 Python程序中操作数据库. pymysql模块的下载: 在Python安装文件中找到scripts ...