zrq495
www.zrq495.com

并查集简单应用。和HDU 1232 一样。

代码如下:

 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 int set[1010];
 6 int cnt;
 7 
 8 int find(int a)
 9 {
10     int x=a;
11     while(x != set[x])
12         x=set[x];
13     return x;
14 }
15 
16 void merge(int a, int b)
17 {
18     int x=find(a);
19     int y=find(b);
20     if (x!=y)
21     {
22         set[x]=y;
23         cnt--;
24     }
25 }
26 
27 int main()
28 {
29     int a, b;
30     int n, m, i, T;
31     cin >> T;
32     while(T--)
33     {
34         cin >> n >> m;
35         cnt=n;
36         for (i=1; i<=n; i++)
37             set[i]=i;
38         for (i=0; i<m; i++)
39         {
40             cin >> a >> b;
41             merge(a, b);
42         }
43         cout << cnt << endl;
44     }
45     return 0;
46 }
posted on 2012-08-04 21:19  zrq495  阅读(144)  评论(0编辑  收藏  举报