标签:
How Many Tables4
题解:简单的并查集(集合的合并),有关系的人,即属于同一个集合的人一桌!看有多少棵树?
代码:
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <string> using namespace std; const int maxx=1005; int par[maxx]; int n,m; void init() { for(int i=1;i<=n;i++) par[i]=i; } int find(int x) { if(par[x]==x) return x; else return par[x]=find(par[x]); } void unite(int x,int y) { x=find(x); y=find(y); if(x==y) return ; par[x]=y; } int main() { int t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); init(); for(int i=1;i<=m;i++) { int x,y; scanf("%d %d",&x,&y); unite(x,y); } int sum=0; for(int i=1;i<=n;i++) { if(par[i]==i) sum++; } printf("%d\n",sum); } return 0; }
HDU 1213 How Many Tables (并查集)
标签:
原文地址:http://blog.csdn.net/jingttkx/article/details/51347115