hdu2818(带权并查集)

Posted yijiull

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu2818(带权并查集)相关的知识,希望对你有一定的参考价值。

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2818

还是不熟练。。。

 1 #include<cstdio>
 2 #include<cstring>
 3 const int maxn=30005;
 4 int f[maxn],under[maxn],sum[maxn];
 5 
 6 void init()
 7 {
 8     for(int i=0;i<=maxn;i++)
 9     {
10         f[i]=i;
11         sum[i]=1;
12         under[i]=0;
13     }
14 }
15 
16 int gf(int x)
17 {
18     if(x!=f[x])
19     {
20        int t=f[x];
21        f[x]=gf(t);
22        under[x]+=under[t];
23     }
24     return f[x];
25 
26 }
27 
28 void uni(int a,int b)
29 {
30     int pa=gf(a);
31     int pb=gf(b);
32     if(pa!=pb)
33     {
34         under[pa]=sum[pb];
35         sum[pb]+=sum[pa];
36         f[pa]=pb;
37     }
38 }
39 
40 int main()
41 {
42     char c[5];
43     int n,x,y;
44     while(scanf("%d",&n)!=EOF)
45     {
46         init();
47         for(int i=0;i<n;i++)
48         {
49             scanf("%s",c);
50             if(c[0]==M)
51             {
52                 scanf("%d%d",&x,&y);
53                 uni(x,y);
54             }
55             else
56             {
57                 scanf("%d",&x);
58                 gf(x);
59                 printf("%d\n",under[x]);
60             }
61         }
62     }
63     return 0;
64 }

 

以上是关于hdu2818(带权并查集)的主要内容,如果未能解决你的问题,请参考以下文章

hdu3234 Exclusive-OR 带权并查集

HDU 3047 Zjnu Stadium 带权并查集

HDU - 3038 / 3048 (带权并查集) (待补)

Travel(HDU 5441 2015长春区域赛 带权并查集)

HDU1289 A Bug's Life (带权并查集)

HDU 3635 Dragon Balls(带权并查集)