标签:
Description
Input
Output
Sample Input
100 4 2 1 2 5 10 13 11 12 14 2 0 1 2 99 2 200 2 1 5 5 1 2 3 4 5 1 0 0 0
Sample Output
4 1 1
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 using namespace std; 5 int pre[30020],son[30020]; 6 int find(int x) 7 { 8 if(x==pre[x]) 9 return x; 10 return find(pre[x]); 11 } 12 void join(int x,int y) 13 { 14 int root1,root2; 15 root1=find(x); 16 root2=find(y); 17 if(root1!=root2) 18 { 19 pre[root2]=root1; 20 son[root1]=son[root2]+son[root1]; 21 } 22 } 23 int main() 24 { 25 int n,m,i,k,j; 26 while(scanf("%d%d",&n,&m)!=EOF) 27 { 28 if(m==0&&n==0)break; 29 for(i=0;i<n;i++) 30 { 31 pre[i]=i; 32 son[i]=1; 33 } 34 for(i=0;i<m;i++) 35 { 36 scanf("%d",&k); 37 int *stu=new int [k]; 38 for(j=0;j<k;j++) 39 { 40 scanf("%d",&stu[j]); 41 if(j!=0) 42 join(stu[j-1],stu[j]); 43 } 44 delete(stu); 45 } 46 printf("%d\n", son[find(0)]); 47 48 } 49 return 0; 50 }
标签:
原文地址:http://www.cnblogs.com/dongq/p/4528601.html