Graph Theory NO.1 HDU_1213_How Many Tables_并查集
2017-10-09 21:28
477 查看
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int num[10000]; int father[10000]; int Init(int n)//初始化 { for(int i=1;i<=n;i++) { father[i]=i; num[i]=1; } return 0; } int Find(int x)//查找根 { if(father[x]!=x) { father[x]=Find(father[x]); } return father[x]; } int Union(int a,int b)//并上去 { if(a==b)return 0; if(num[a]<num[b]) { father[a]=b; num[b]+=num[a]; } else { father[b]=a; num[a]+=num[b]; } return 0; } int main() { int t,n,m; while(~scanf("%d",&t)) { while(t--) { int a,b; scanf("%d%d",&n,&m); memset(father,0,sizeof(father)); memset(num,0,sizeof(num)); Init(n);//初始化; for(int i=0;i<m;i++) { scanf("%d%d",&a,&b); Union(Find(a),Find(b));//查和并; } int count=0; for(int i=1;i<= 4000 n;i++) { if(father[i]==i) { count++; } printf("%d\n",father[i]); } printf("%d\n",count); } } 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 -- 并查集
- 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 (dfs求联通块 || 并查集)
- 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解题报告(并查集)