畅通工程

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 55552    Accepted Submission(s): 29588


Problem Description
某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?
 

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
3 3
4 3
1 2
5 2
1 3
2 3
1 2
0
3 5
999 0
 

Sample Output
1
0
998
2
Hint
Hint
Huge input, scanf is recommended.
 

Source
Problem : 1232 ( 畅通工程 )     Judge Status : Accepted

RunId : 21246972    Language : G++    Author : hnustwanghe

Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta

#include<iostream>
#include<cstdio>

using namespace std;
const int N = 1000 + 5;
int pre[N];
int Find(int x){
return pre[x]==x?x:(pre[x]=Find(pre[x]));
}
bool Merge(int x,int y){
x = Find(x),y = Find(y);
if(x!=y) pre[x] = y;
return x!=y?true:false;
}
int main(){
int n,m,from,to;
while(scanf("%d %d",&n,&m)==2 && n){
for(int i=0;i<N;i++) pre[i] = i;
for(int i=0;i<m;i++) {
scanf("%d %d",&from,&to);
Merge(from,to);
}
int ans = -1;
for(int i=1;i<=n;i++) if(pre[i]==i) ans++;
printf("%d\n",ans);
}
}

#include<iostream>
#include<cstdio>

using namespace
std;
const int
N = 1000 + 5;
int
pre[N];
int
Find(int x){
return
pre[x]==x?x:(pre[x]=Find(pre[x]));
}
bool
Merge(int x,int y){
x = Find(x),y = Find(y);
if(
x!=y) pre[x] = y;
return
x!=y?true:false;
}
int main(){
int
n,m,from,to;
while(
scanf("%d %d",&n,&m)==2 && n){
for(int
i=0;i<N;i++) pre[i] = i;
for(int
i=0;i<m;i++) {
scanf("%d %d",&from,&to);
Merge(from,to);
}
int
ans = -1;
for(int
i=1;i<=n;i++) if(pre[i]==i) ans++;
printf("%d\n",ans);
}
}

 

并查集专题: HDU1232畅通工程的更多相关文章

  1. 傻子都能懂的并查集题解——HDU1232畅通工程

    原题内容: Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都 ...

  2. 并查集 HDOJ 1232 畅通工程

    题目传送门 /* 并查集(Union-Find)裸题 并查集三个函数:初始化Init,寻找根节点Find,连通Union 考察:连通边数问题 */ #include <cstdio> #i ...

  3. 并查集_HDU 1232_畅通工程

    某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可). ...

  4. 并查集入门(hdu1232“畅通工程”)

    在学习并查集之前,首先需要明白基本的并查集可以完成的功能.并查集主要是用于处理不相交集合的合并问题.它是一种基础算法,在离散数学中,可以利用并查集求一个图的连通分支,利用其这个特性可以为我们解决一系列 ...

  5. Leetcode之并查集专题-765. 情侣牵手(Couples Holding Hands)

    Leetcode之并查集专题-765. 情侣牵手(Couples Holding Hands) N 对情侣坐在连续排列的 2N 个座位上,想要牵到对方的手. 计算最少交换座位的次数,以便每对情侣可以并 ...

  6. Leetcode之并查集专题-684. 冗余连接(Redundant Connection)

    Leetcode之并查集专题-684. 冗余连接(Redundant Connection) 在本问题中, 树指的是一个连通且无环的无向图. 输入一个图,该图由一个有着N个节点 (节点值不重复1, 2 ...

  7. ZR并查集专题

    ZR并查集专题 并查集,作为一个基础算法,对于初学者来说,下面的代码是维护连通性的利器 return fa[x] == x ? x : fa[x] = getf(fa[x]); 所以,但是这对并查集的 ...

  8. HDU1232 畅通工程 并查集

    畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  9. hdu1232 畅通工程 并查集的 应用

    畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

随机推荐

  1. bing 精美壁纸获取方式

    右键检查 打开就行了

  2. 设置获取data-*属性值

    html代码如下: <div id="getId" data-id="122" data-vice-id="11">获取id&l ...

  3. Spring Boot教程(二十一)开发Web应用(2)

    在完成配置之后,举一个简单的例子,在快速入门工程的基础上,举一个简单的示例来通过Thymeleaf渲染一个页面. @Controller public class HelloController { ...

  4. 【转】C语言中数组名和指针的区别

    注:本文转自http://www.cnblogs.com/furaibo/archive/2010/03/19/1689710.html 魔幻数组名 请看程序(本文程序在WIN32平台下编译): #i ...

  5. Firefox_64.0 中selenium ide_3.4.4的使用教程(实操)

     说明:旧版的selenium IDE有很多功能,在新版中都去除了,很多功能都做不了. 写于:2018.12.31 一.安装selenium IDE 下载和安装这里推荐参考文章:https://blo ...

  6. git连接远程仓库时,出现“ Repository not found"的解决办法

    2018-08-25 今天连接远程仓库时,出现: 原来是远程仓库地址名字错了. 解决方法: 1.找到.git目录 2.进入.git找到config文件 3.修改config里面的远程地址url

  7. SVN重命名后,不允许提交

    在vs中对文件名重命名后,导致不能提交 解决: 在源码根目录下提交源码,提交完毕后,再使用如下菜单对需要命名的单个文件进行重命名,重命名完毕后,在源码根目录下提交源码即可

  8. 腾讯这套SpringMVC面试题你懂多少(面试题和答案)

    1.什么是 SpringMvc? 答:SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整 2.Spring MVC 的优点: 答:1)它是基于组件技术的.全 ...

  9. JavaScript 事件不触发

    在class上绑定的事件,点击图片的时候无法触发 <div id="files" class="files"> <div> <p& ...

  10. 【重点突破】—— UniApp 微信小程序开发官网学习Two

    一.使用Vue.js注意事项 Vue.js在uni-app中使用的差异: 新增:uni-app除了支持Vue实例的生命周期,还支持应用启动.页面显示等生命周期 受限:发布到H5时支持所有vue的语法, ...