HDU 1232 畅通工程 (并查集)
2012-08-20 17:19
113 查看
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1232
这道题目,是一道很清楚的并查集模板题。
首先给你两个数据,表示城镇数量N和道路数量M
接下来会告诉你哪几个城市已经通路了
剩下的就是你要算出,至少要需要多少条路。
如果你还不会并查集,你可以到这里下载 并查集基础知识讲解: http://download.csdn.net/detail/l_oser/4513396。
AC代码如下:
这道题目,是一道很清楚的并查集模板题。
首先给你两个数据,表示城镇数量N和道路数量M
接下来会告诉你哪几个城市已经通路了
剩下的就是你要算出,至少要需要多少条路。
如果你还不会并查集,你可以到这里下载 并查集基础知识讲解: http://download.csdn.net/detail/l_oser/4513396。
AC代码如下:
#include<iostream> #include<stdio.h> using namespace std; int parent[1005]; int n,m; int sum; int Find(int x) //查找父亲节点 { if(parent[x]==x) return x; return parent[x]=Find(parent[x]); } void Union(int a,int b)//合并 { if(a!=b) { parent[a]=b; sum++; } } int main() { while(scanf("%d %d",&n,&m)) { if(n==0) break; int i; for(i=1;i<=n;i++) parent[i]=i; //初始化父亲节点 sum=0; int v,u; for(i=0;i<m;i++) { scanf("%d %d",&v,&u); Union(Find(v),Find(u)); //通过判断两个集合的父亲节点是否相同,然后考虑是否合并 } printf("%d\n",n-1-sum); //总道路数= n-1,减去已经修建好的,便是还要修建的。 } return 0; }
相关文章推荐
- hdu 1232 畅通工程(并查集)
- Hdu 1232 畅通工程(并查集模板题)
- HDU - 1232 畅通工程(简单并查集)
- 并查集(以hdu1232 畅通工程为例)
- hdu 1232 畅通工程 (并查集)
- HDU 1232 畅通工程(并查集)
- hdu 1232 畅通工程(简单并查集)
- HDU-1232-畅通工程(并查集)
- HDU 1232 畅通工程 【并查集模板】
- HDU-畅通工程-1232(并查集)How Many Tables(1213)
- hdu 1232 畅通工程并查集版
- 并查集详解 (转)-HDU-1232 - 畅通工程
- [ACM] hdu 1232 畅通工程(并查集)
- HDU 1232 畅通工程 (dfs、并查集)
- hdu1232——畅通工程(并查集)
- hdu 1232 畅通工程 最小生成树 并查集
- HDU 1232--畅通工程【水题,并查集】
- hdu 1232 畅通工程(并查集)
- HDU 题目1232 畅通工程 (并查集)
- hdu1232 畅通工程(并查集)