并查集模板!

 1 #include <iostream>
 2 #include <cstdlib>
 3 #include <cstdio>
 4 #include <cstring>
 5 #define N 30
 6 using namespace std;
 7 
 8 int sum;
 9 int ufs[N];
10 
11 void makeset(int x)
12 {
13     for(int i=0;i<x;i++) ufs[i]=i;
14 }
15 
16 int Find(int x)
17 {
18     if(x==ufs[x]) return x;
19     ufs[x]=Find(ufs[x]);
20     return ufs[x];
21 }
22 
23 void Union(int a,int b)
24 {
25     int x=Find(a);
26     int y=Find(b);
27     if(x==y) return;
28     sum=sum-1;
29     ufs[y]=x;
30 }
31 
32 int main()
33 {
34     /*
35     freopen("ACM.txt","r",stdin);
36     int n,m;
37     int t;
38     cin>>t;
39     while(t--)
40     {
41         cin>>n>>m;
42         sum=n;
43         makeset(n);
44         int a,b;
45         for(int i=0;i<m;i++)
46         {
47             cin>>a>>b;
48             Union(a,b);
49         }
50         cout<<sum<<endl;
51     }
52     */
53 }
View Code

 

posted on 2014-10-10 20:24  M.D.LUFFI  阅读(93)  评论(0编辑  收藏  举报

导航