zoukankan      html  css  js  c++  java
  • hdu3635

    /*
    一开始第a个球在第a个城市 
    操作T a b,把第a个球所在城市的所有球移到b所在的城市 
    操作Q a 
    要求输出
    第a个球在哪个城市
    第a个球所在的城市有几个球 
    第a个球移动次数 
    */
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #define move movee
    #define MAXN 10005
    using namespace std;
    //第i个球所在城市,第i个球所在城市有几个球,第i个球移动次数 
    int F[MAXN],num[MAXN],move[MAXN];
    int find(int a){
        if(F[a]==-1) return a;
        int tmp=F[a];//保存a的父亲 
        F[a]=find(F[a]);//
        move[a]+=move[tmp];
        return F[a]; 
    }
    //把a所在的集合移到b所在的集合 
    void bing(int a,int b){
        int t1=find(a);
        int t2=find(b);
        if(t1!=t2){
            F[t1]=t2;
            move[t1]=1;
            num[t2]+=num[t1];
        } 
    } 
    int main(){
        int T,n,q;
        cin >> T;
        for(int tt=1;tt<=T;tt++){
            scanf("%d%d",&n,&q);
            for(int i=1;i<=n;i++){
                F[i]=-1;
                num[i]=1;
                move[i]=0; 
            }
            char op[10];
            int a,b;
            printf("Case %d:
    ",tt);
            while(q--){
                scanf("%s",op);
                if(op[0]=='T'){
                    scanf("%d%d",&a,&b);
                    bing(a,b);
                }
                else {
                    scanf("%d",&a);
                    int tmp=find(a);
                    printf("%d %d %d
    ",tmp,num[tmp],move[a]);
                }
            }
        } 
        return 0;
    } 
  • 相关阅读:
    nodejs
    Linux 的常用命令
    vue入门学习1_事件及修饰符
    mongo笔记
    spring boot笔记
    CentOS 6 ElasticSearch 5.5.x 安装指南
    linux用户和用户组
    linux下配置安装
    linux命令
    elasticsearch
  • 原文地址:https://www.cnblogs.com/zsben991126/p/9823351.html
Copyright © 2011-2022 走看看