HDU 1232 畅通工程 并查集水题
来源:互联网 发布:php为什么要用到apache 编辑:程序博客网 时间:2024/05/20 20:55
题意
并查集算法最后得到的集合的个数减一就是结果
传送门
http://acm.hdu.edu.cn/showproblem.php?pid=1232
#include <cstdio>#include <cstring>#include <iostream>using namespace std;class UnionFind {private: int * fa; int size;public: UnionFind(int n) { size = n; fa = new int[n+1]; Init(); } ~UnionFind() { delete[] fa; } void Init() { for(int i = 1 ; i <= size ; i ++) { fa[i] = i; } } int Find(int x) { if(fa[x] != x) { fa[x] = Find(fa[x]); } return fa[x]; } bool Union(int x,int y) { int fx = Find(x); int fy = Find(y); if(fx != fy) { fa[fx] = fy; return true; } else { return false; } } int GetCount() { int count = 0; for(int i = 1 ; i <= size ; i ++) { if(fa[i] == i) { count ++; } } return count; } int GetMaxSetNum() { int maxSetNum = 0; int * countSet = new int[size+1]; memset(countSet,0,sizeof(int)*(size+1)); for(int i = 1 ; i <= size ; i ++) { int fi = Find(i); countSet[fi] ++; } for(int i = 1 ; i <= size ; i ++) { if(countSet[i] > maxSetNum) { maxSetNum = countSet[i]; } } delete[] countSet; return maxSetNum; }};int main() { int n,m; while(scanf("%d %d",&n,&m) == 2) { UnionFind uf(n); for(int i = 1 ; i <= m ;i ++) { int u,v; scanf("%d %d",&u,&v); uf.Union(u,v); } printf("%d\n",uf.GetCount()-1); }}
阅读全文
0 0
- 畅通工程+并查集水题+hdu
- HDU - 1232 畅通工程(并查集水题)
- HDU 1232 畅通工程 并查集水题
- Hdu 1232 畅通工程 (并查集水题)
- 杭电 1232 并查集水题 畅通工程
- hdu 1232 畅通工程 并查集
- HDU 1232 畅通工程 并查集
- HDU 1232 畅通工程 (并查集)
- hdu 1232畅通工程 并查集
- hdu 1232 畅通工程 并查集
- HDU--1232--畅通工程--并查集
- 畅通工程-并查集-hdu 1232
- hdu 1232 畅通工程并查集
- HDU 1232 畅通工程 并查集
- hdu 1232 畅通工程 并查集
- hdu 1232 畅通工程(并查集)
- HDU 1232 畅通工程(并查集)
- HDU 1232 畅通工程(并查集)
- Python问题:AttributeError: '_csv.reader' object has no attribute 'next' 以及UnicodeDecodeError: 'gbk' co
- HDU-4823(计算几何)
- Maven学习笔记(十一)-创建自定义的archetype(项目模板)
- Java学习笔记---HTTP协议
- python-IV
- HDU 1232 畅通工程 并查集水题
- 迷失在江南
- (转)马克•柯霍德斯:一位王牌大空头的传奇人生
- 2017北大信科计算机机试G
- 链表
- 快速排序 java
- 数组指针,指针数组,函数指针,函数指针数组,函数指针数组指针
- idea中建立一个OSGI项目
- 更换宽带服务商后Ubuntu无法上网