zoukankan      html  css  js  c++  java
  • hihoCoder 无间道之并查集

    题目

    题意:两种操作,一种是告诉它哪两个人是同一阵营的,而另一种是询问某两个人是不是同一阵营的,是:输出yes ,不是:输出:no。

    这道题思路是并查集,但问题在于,如何把名字(是个字符串)合并?

    一般来说都要用到:map,set这种东西,但是我不会啊。。。。下面这个代码是我没有map做的。等我学习了map之后,再写一边。

    #include<stdio.h>
    #include<string.h>
    int par[100000];
    char c[100000][20];
    int cnt=0;
    
    int _find (int x)
    {
        if(par[x]==x)
        {
            return x;
        }
        else{
            return par[x]=_find(par[x]);
        }
    }
    void unite (int x,int y)
    {
        x=_find(x);
        y=_find(y);
        if(x!=y) par[x]=y;
    }
    int pp(char a[])
    {   int i;
        for( i=0;i<=cnt;i++)
        {
           if(strcmp(c[i],a)==0)
                 return par[i];
        }
        cnt++;
        strcpy(c[cnt],a);
        par[cnt]=cnt;
        return cnt;
    }
    int main()
    {
    
       char a[20],b[20];
       int T,n,i;
        int oo1,oo2;
        scanf("%d",&T);
          for( i=0;i<T;i++)
           {
               memset(a,0,sizeof(a));
               memset(b,0,sizeof(b));
    
               scanf("%d",&n);
    
               scanf("%s",a);
                 oo1=pp(a);
               scanf("%s",b);
                 oo2=pp(b);
    
               if(n==0)
               {
                unite(oo1,oo2);
               }
               else{
                if(_find(oo1)==_find(oo2))
                    printf("yes
    ");
                else
                    printf("no
    ");
               }
           }
    
    
        return 0;
    }
    


  • 相关阅读:
    vs2015驱动开发中使用RtlStringCchPrintfW()报错
    windbg双机调试配置
    修改Windows默认调试器
    kong配置service和route实现简单API代理
    konga的初步使用
    Kong Admin API — 核心对象
    Kong的API管理方式
    kong的管理UI选择-konga
    Kong 安装
    关于kong | API Gateway
  • 原文地址:https://www.cnblogs.com/qie-wei/p/10160263.html
Copyright © 2011-2022 走看看