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

    先上非正解

    并查集 没啥好说的

    #include<cstdio>
    #include<cstring>
    
    int n,m,x,y,fa[500001],fro[500001],beh[500001];
    char s[10];
    
    int abs(int u)
    {
      return u>0 ? u:-u;
    }
    
    int findd(int u)
    {
      if(fa[u]==u)
        return u;
      int k=findd(fa[u]);
      fro[u]+=fro[fa[u]];
      return fa[u]=k;
    }
    
    void add(int u,int v)
    {
      int kx=findd(u),ky=findd(v);
      fa[kx]=ky;
      fro[kx]=beh[ky];
      beh[ky]+=beh[kx];
    }
    
    int main()
    {
      scanf("%d",&m);
      for(int i=1; i<=30000; i++)
      {
        fa[i]=i;
        beh[i]=1;
      }
      while(m--)
      {
        scanf("%s%d%d",s,&x,&y);
        if(s[0]=='M')
          add(x,y);
        else if(findd(x)==findd(y))
          printf("%d
    ",abs(fro[x]-fro[y])-1);
        else
          printf("-1
    ");
      }
      return 0;
    }

    下面是正解

    用三万个队列模拟(待更新)(tao

  • 相关阅读:
    ListCtrl中垂直滚动条自动滚动
    auth组件
    母版的继承
    mysql数据备份和恢复
    部署MHA
    安装mysql
    yum源优化
    存储过程
    redis哨兵、集群
    redis主从同步
  • 原文地址:https://www.cnblogs.com/Alarak26/p/9166168.html
Copyright © 2011-2022 走看看