HDU 1213 How Many Tables 并查集
2017-03-31 11:44
459 查看
题意
n个点,m条边,无向图,求最后形成的集合有多少个。解法
基础的并查集传送门
http://acm.hdu.edu.cn/showproblem.php?pid=1213Code
#include <cstdio> #include <iostream> using namespace std; class UnionFind { private: int * fa; int size; public: UnionFind(int n) { size = n; fa = new int[n+1]; for(int i = 1 ; i <= size ; i ++) { fa[i] = i; } } ~UnionFind() { delete[] fa; } int Find(int x) { if(fa[x] != x) { fa[x] = Find(fa[x]); } return fa[x]; } void Union(int x,int y) { int fx = Find(x); int fy = Find(y); if(fx != fy) { fa[fx] = fy; } } int GetCount() { int count = 0; for(int i = 1 ; i <= size ; i ++) { if(fa[i] == i) { count ++; } } return count; } }; int main() { int caseNum; scanf("%d",&caseNum); while(caseNum--) { int n , m ; scanf("%d %d",&n,&m); UnionFind uf(n); for(int i = 1 ; i <= m ; i ++) { int u , v; scanf("%d %d",&u,&v); uf.Union(u,v); } int ans = uf.GetCount(); printf("%d\n",ans); } return 0; }
相关文章推荐
- HDU 1213 How Many Tables(并查集)
- 【HDU 1213】How many tables(并查集模板)
- hdu 1213 How Many Tables(并查集~~)
- hdu 1213 How Many Tables(并查集水题)
- HDU 1213 How Many Tables(并查集)
- hdu杭电1213 How Many Tables【并查集】
- hdu 1213 How Many Tables(并查集的简单应用)
- HDU1213 How Many Tables(基础并查集)
- HDU 1213 How Many Tables(并查集裸题)
- HDU 1213 How Many Tables (并查集,连通分支数,两种方式)
- HDU--1213--How Many Tables--并查集
- 并查集-HDU-1213-How Many Tables
- HDU 1213 How Many Tables 并查集
- HDU 1213 How Many Tables 并查集入门
- HDU 1213 How Many Tables(并查集)
- HDU 1213 How Many Tables 第一道并查集的题。
- HDU ~ 1213 ~ How Many Tables (并查集模板题)
- HDU--1213 -- How Many Tables [水水的并查集]
- HDU 1213 How Many Tables(简单并查集)
- HDU 1213 How Many Tables(模板——并查集)