zoukankan      html  css  js  c++  java
  • P1196 银河英雄传说

    设置两个数组来记录后面的长度和前面的长度

    #include<iostream>
    #include<cstdio> 
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<queue>
    #include<vector>
    #include<cmath>
    using namespace std;
    int behind[30010],front[30010],f[30010];
    int find(int x)
    {
        if(f[x]==x) return x;
        int fx=find(f[x]);
        front[x]+=front[f[x]];
        return f[x]=fx;
    }
    void mix(int x,int y)
    {
        int fx=find(x);
        int fy=find(y);
        front[fx]=behind[fy];
        behind[fy]+=behind[fx];
        f[fx]=fy;
    }
    int main()
    {
        for(int i=1;i<=30000;i++)
        {
            f[i]=i;
            behind[i]=1;
            //front[i]=0;
        }
        int T;
        scanf("%d",&T);
        for(int i=1;i<=T;i++)
        {
            int x,y;
            char p;
            cin>>p;
            scanf("%d%d",&x,&y);
            if(p=='M')
              mix(x,y);
            else{
                if(find(x)!=find(y))
                  printf("-1
    ");
                else
                printf("%d
    ",abs(front[y]-front[x])-1);//  
    回车 ! 
            }
        }
        return 0;
    } 
  • 相关阅读:
    spring-boot快速搭建解析
    springmvc处理ajax跨域
    Spring-AOP解析
    springmvc注解
    springmvc源码分析
    Spring源码分析
    JAVA性能优化
    数据取舍
    命令行控制
    Junit常用操作
  • 原文地址:https://www.cnblogs.com/dfsac/p/6819765.html
Copyright © 2011-2022 走看看