zoukankan      html  css  js  c++  java
  • hdu 1116 Play on Words

    点击打开链接

    简单欧拉回路判定:

    当是单向欧拉回路时,必须保证每个结点入度等于出度。

    当是单向欧拉路时,必须保证除了两个结点外,每个结点的入度等于出度,但这两个结点中,一个结点的入度比出度大1,另一个结点的入度比出度小1。


    #include<stdio.h>
    #include<string.h>
    int IN[30],OUT[30];
    int F[30],D[30];
    char as[1005];
    int f(int x){if(x!=F[x]) x = f(F[x]); return x;}
    int main()
    {
            int i,j,k,t,n,x,y;
            scanf("%d",&t);
            while(t--)
            {
                    scanf("%d",&n);
                    memset(IN,0,sizeof(IN));
                    memset(OUT,0,sizeof(OUT));
                    memset(D,0,sizeof(D));
                    for(i = 0; i < 30; ++ i) F[i] = i;
                    while(n--)
                    {
                            scanf("%s",as);
                            x = as[0] - 'a' + 1;
                            y = as[strlen(as)-1] - 'a' + 1;
                            IN[x]++; OUT[y]++;
                            D[x] = 1; D[y] = 1;
                            x = f(x); y = f(y);
                            if(x!=y) F[y] = x;
                    }
                    k = 0;
                    for(i = 1; i <= 26; ++ i)if(D[i]&&F[i]==i) k++;
                    if(k>1) puts("The door cannot be opened.");
                    else{
                            for(k=0,i=1; i<=26;++i)if(IN[i]!=OUT[i]) D[k++] = i;
                            if(!k)puts("Ordering is possible.");
                            else if((k==2)&&((IN[D[0]]==OUT[D[0]]+1&&IN[D[1]]==OUT[D[1]]-1)||(IN[D[0]]==OUT[D[0]]-1&&IN[D[1]]==OUT[D[1]]+1)))
                                    puts("Ordering is possible.");
                            else puts("The door cannot be opened.");
                    }
            }return 0;
    }


  • 相关阅读:
    DRF
    DRF
    DRF
    DRF
    RESTful介绍
    DRF parser请求处理流程
    Vue项目的创建
    怎么清除file控件的文件路径
    java用spring实现文件下载
    JS判断元素是否在数组内 阿星小栈
  • 原文地址:https://www.cnblogs.com/yyf573462811/p/6365408.html
Copyright © 2011-2022 走看看