zoukankan      html  css  js  c++  java
  • hdu 3635 Dragon Balls(并查集)

    题意:

    N个城市,每个城市有一个龙珠。

    两个操作:

    1.T A B:A城市的所有龙珠转移到B城市。

    2.Q A:输出第A颗龙珠所在的城市,这个城市里所有的龙珠个数,第A颗龙珠总共到目前为止被转移了多少次。

    思路:

    前两个好求,第三个求转移的次数只要把它到根的路径上的值加起来就行了

    看代码

    代码:

    int N,Q;
    int fa[10005], ballNum[10005], moveTime[10005];
    
    
    int findFa(int x){
        if(fa[x]==x)
            return fa[x];
        int t=findFa(fa[x]);
        moveTime[x]+=moveTime[fa[x]];
        ballNum[x]=ballNum[t];
        return fa[x]=t;
    }
    
    
    
    int main(){
    
        int T;
        cin>>T;
        rep(t,1,T){
            scanf("%d%d",&N,&Q);
    
            rep(i,1,N){
                fa[i]=i;
                ballNum[i]=1;
                moveTime[i]=0;
            }
    
            printf("Case %d:
    ",t);
            while(Q--){
                char ope[5];
                int A,B;
                scanf("%s",ope);
                if(ope[0]=='T'){
                    scanf("%d%d",&A,&B);
                    int fA=findFa(A);
                    int fB=findFa(B);
                    if(fA!=fB){
                        ballNum[fB]+=ballNum[fA];
                        moveTime[fA]++;
                        fa[fA]=fB;
                    }
                }else{
                    scanf("%d",&A);
                    findFa(A);
                    printf("%d %d %d
    ",fa[A],ballNum[A],moveTime[A]);
                }
            }
        }
    
        return 0;
    }
  • 相关阅读:
    jQuery(四)
    jQuery(三)
    jQuery(二)
    jQuery(一)
    JS(四)
    JS(三)
    JS(二)
    类似openDialog的弹窗
    vue的异步组件按需加载
    vue实现点击、滑动右侧字母对应各个城市
  • 原文地址:https://www.cnblogs.com/fish7/p/4332740.html
Copyright © 2011-2022 走看看