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

Building Block HDU - 2818 (并查集)

时间:2017-09-07 23:02:32      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:.net   img   using   bsp   display   lock   one   div   ble   

Building Block

HDU - 2818

题意:搬砖。。。每一次可以把a所在的那一堆放到b所在的那一堆上面,问第x号砖下面有几块砖。

记录一下到根节点的距离(dw),以及根节点上方有几块砖(up)。

技术分享
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int maxn=30010;
 5 int f[maxn],up[maxn],dw[maxn];
 6 
 7 int gf(int x){
 8     if(x==f[x]){
 9         return x;
10     }
11     int r=f[x];
12     f[x]=gf(r);
13     dw[x]+=dw[r];
14     return f[x];
15 }
16 
17 int n;
18 int main(){
19    // freopen("in.txt","r",stdin);
20     while(scanf("%d",&n)!=EOF){
21         int ans=0;
22         for(int i=0;i<maxn;i++) {f[i]=i;up[i]=1;dw[i]=0;}
23         for(int i=0;i<n;i++){
24             int a,b;
25             char c;
26             getchar();
27             scanf("%c",&c);
28             if(c==M){
29                 scanf("%d%d",&a,&b);
30                 int pa=gf(a),pb=gf(b);
31                 if(pa!=pb){
32                     f[pa]=pb;
33                     dw[pa]+=up[pb];
34                     up[pb]+=up[pa];
35                 }
36             }else{
37                 scanf("%d",&a);
38                 gf(a);
39                 printf("%d\n",dw[a]);
40             }
41         }
42     }
43     return 0;
44 }
View Code

 

Building Block HDU - 2818 (并查集)

标签:.net   img   using   bsp   display   lock   one   div   ble   

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

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