HDOJ 1232:畅通工程 并查集求解子图的个数
来源:互联网 发布:淘宝灯具3c认证怎么办 编辑:程序博客网 时间:2024/05/26 14:12
这道浙大的研究生上机复试题题意大致是:给一个图,问最少添加几条边可以使图联通。如果一个图有N个子图,显然添加N-1条边便可以使图联通了。于是这个题课转化为求解一个图的子图的个数。
求解子图的个数可以用并查集,也可以用教材上的深搜或宽搜求解,我用的是并查集求解,因为并查集显然形式要更为简洁。
我的AC代码。
#include<iostream>#include<stdio.h> using namespace std;const int Max = 1000;int ancestor[Max];int rank[Max];int getAncestor(int c){while(ancestor[c]) c = ancestor[c];return c;}int main(){int edges, vers;int a, b, pa, pb;int sum;while(scanf("%d", &vers) && vers){scanf("%d", &edges);for(int i=1; i<=vers; i++) ancestor[i] = 0, rank[i] = 1;for(int i=0; i<edges; i++){scanf("%d%d", &a, &b);pa = getAncestor(a);pb = getAncestor(b);if(pa != pb){if(rank[pa] < rank[pb]){ ancestor[pa] = pb;rank[pb] += rank[pa];}else{ancestor[pb] = pa;rank[pa] += rank[pb];}}}sum = 0;for(int i=1; i<=vers; i++)if(!ancestor[i]) sum ++;printf("%d\n", sum-1);}system("pause");return 0;}
- HDOJ 1232:畅通工程 并查集求解子图的个数
- HDOJ 1232 畅通工程 并查集
- hdoj 1232 畅通工程 【并查集】
- HDoj-1232-畅通工程-并查集
- HDOJ 1232 畅通工程(并查集)
- hdoj 1232 畅通工程 【并查集】
- hdoj-1232 畅通工程【并查集】
- hdoj 1232 畅通工程【并查集】
- HDOJ 1232 畅通工程 (并查集)
- hdoj 畅通工程 并查集
- HDOJ 1863 畅通工程(并查集)
- HDoj-1863-畅通工程-并查集
- HDoj-1879-畅通工程-并查集
- HDOJ畅通工程之并查集
- hdoj畅通工程【并查集】
- HDOJ 1232 畅通工程 (并查集)
- hdu/hdoj 1232 畅通工程---并查集
- HDOJ 题目1232 畅通工程(并查集)
- poj 2244 Eeny Meeny Moo
- Android学习笔记之AutoCompleteTextView
- 配置Tomcat时出现"JAVA_HOME should point to a jdk not a jre”
- 对于大并发的思考
- linux下omfs文件系统的硬盘布局
- HDOJ 1232:畅通工程 并查集求解子图的个数
- Java利用反射来获取一个方法的 范型化参数 Vector<Integer>的类型
- CE/CS的同学们,你们身边是否有这样一种人?
- C语句常见的错误
- HDOJ 1863:畅通工程 Prim算法求解最小生成树
- 数独游戏
- Android应用开发系列——目录
- Linux 学习2 符号 比较
- Cf 101 Div.2