1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 int id[1005]; 6 int tree(int x) 7 { 8 while(id[x]!=x) 9 { 10 x = id[x]; 11 } 12 return id[x]; 13 } 14 15 int main() 16 { 17 int T; 18 int i = 0, j = 0; 19 int n, m; 20 21 int mi, mj; 22 int counts; 23 cin >> T; 24 for(i=0; i<T; i++) 25 { 26 counts = 0; 27 memset(id, 0, sizeof(id)); 28 cin >> n >> m; 29 for(j=0; j<=n; j++){ 30 id[j] = j; 31 } 32 for(j=1; j<=m; j++) 33 { 34 cin >> mi >> mj; 35 id[tree(mi)] = id[tree(mj)]; 36 } 37 for(j=1; j<=n; j++) 38 { 39 if(id[j]==j) 40 counts++; 41 } 42 43 cout << counts << endl; 44 } 45 return 0; 46 }
原文:http://www.cnblogs.com/toLFhase/p/6522800.html