zoukankan      html  css  js  c++  java
  • Building Block HDU

    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
    ",dw[a]);
    40             }
    41         }
    42     }
    43     return 0;
    44 }
    View Code
  • 相关阅读:
    c8051f交叉开关
    8052定时器2的用法
    poj1010
    poj2101
    poj1958
    poj3444
    poj2977
    DataTable 相关操作
    C#中string和StringBuilder的区别
    DataTable排序,检索,合并,筛选
  • 原文地址:https://www.cnblogs.com/yijiull/p/7492122.html
Copyright © 2011-2022 走看看