码迷,mamicode.com
首页 > 其他好文 > 详细

hdu2818(带权并查集)

时间:2017-04-29 23:30:24      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:hdu   else   blank   problem   har   log   lan   tar   带权并查集   

题目连接: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(带权并查集)

标签:hdu   else   blank   problem   har   log   lan   tar   带权并查集   

原文地址:http://www.cnblogs.com/yijiull/p/6786489.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!