共n个人,编号0~m-1,分为m组,组内人有关系,求与0有关系的人的个数
#include <iostream> #include <cstring> #include <string> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <queue> #include <map> #define inf 0x3f3f3f3f #define ll __int64 using namespace std; int r[30005],n,m,vis[30005]; int root(int a) { if(r[a]==a) return a; else return r[a]=root(r[a]); } void merge(int a,int b) { int ra,rb; ra=root(a); rb=root(b); if(ra==rb) return; if(a<b) r[rb]=ra,vis[ra]+=vis[rb]; else r[ra]=rb,vis[rb]+=vis[ra]; } int main() { int i,k,a,b; while(scanf("%d%d",&n,&m)&&(n||m)) { for(i=0;i<n;i++) r[i]=i,vis[i]=1; while(m--) { scanf("%d",&k); scanf("%d",&a); for(i=1;i<k;i++) { scanf("%d",&b); merge(a,b); } } printf("%d\n",vis[root(0)]); } return 0; }
poj 1611 The Suspects --- 并查集,布布扣,bubuko.com
原文:http://blog.csdn.net/u011032846/article/details/20150385