http://acm.hdu.edu.cn/showproblem.php?pid=1213
1 #include<iostream> 2 #include<stdio.h> 3 #include<math.h> 4 #include<string.h> 5 #include<stdlib.h> 6 using namespace std; 7 const int N=1005; 8 int father[N]; 9 int find(int x) 10 { 11 if(father[x]!=x) 12 father[x]=find(father[x]); 13 return father[x]; 14 } 15 void make(int a,int b) 16 { 17 int f1=find(a); 18 int f2=find(b); 19 if(f1!=f2) 20 father[f2]=f1; 21 return ; 22 } 23 24 int main() 25 { 26 //freopen("in.txt","r",stdin); 27 int t; 28 cin>>t; 29 while(t--) 30 { 31 int n,m,a,b; 32 cin>>n>>m; 33 for(int i=0;i<N;i++) 34 father[i]=i; 35 for(int i=0;i<m;i++) 36 { 37 cin>>a>>b; 38 make(a,b); 39 } 40 int cnt=0; 41 for(int i=1;i<=n;i++) 42 { 43 if(father[i]==i) 44 cnt++; 45 } 46 cout<<cnt<<endl; 47 } 48 return 0; 49 }