zoukankan      html  css  js  c++  java
  • uva10129 play on words

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    char s[1005];
    int in[27], out[27];
    int g[27][27];
    int vis[27];
    //int same[27];
    
    int Euler()//返回1表示在图全连通的条件下,是欧拉道路
    {
        int n = 0;
        for (int i = 1;i <= 26;i++)
        {
            //if (same[i] && !in[i] && !out[i])return 0;
            int sum = in[i] + out[i];
            if (sum == 1 || sum == -1)n++;
            else if (sum != 0)return 0;
        }
        if (n != 0 && n != 2)return 0;
        return 1;
    }
    
    void dfs(int u)
    {
        for (int i = 1;i <= 26;i++)
        {
            if (!vis[i] && g[i][u])
            {
                vis[i] = 1;
                dfs(i);
            }
        }
    }
    
    int DFS()//返回1表示图全连通
    {
        int count = 0;
        for (int i = 1;i <= 26;i++)
        {
            if (in[i] || out[i])
                if (!vis[i])
                {
                    vis[i] = 1;
                    if (++count > 1)return 0;
                    dfs(i);
                }
        }
        return 1;
    }
    
    int main(void)
    {
        int t, n;
        scanf("%d", &t);
        while (t--)
        {
            scanf("%d", &n);
            memset(in, 0, sizeof(in));
            memset(out, 0, sizeof(out));
            // memset(same, 0, sizeof(same));
            memset(vis, 0, sizeof(vis));
            memset(g, 0, sizeof(g));
            while (n--)
            {
                scanf("%s", s);
                int _last = strlen(s) - 1;
                int u = s[0] - 'a' + 1, v = s[_last] - 'a' + 1;
                //uv相同不需特别处理,否则当全部是比如mem这种就会出错,难过,自以为谨小慎微反而错了--bug了好久好久
                g[u][v] = g[v][u] = 1;
                // if (u == v)same[u] = 1;
                //else {
                in[u]++;
                out[v]--;
                //}
            }
            int a = !DFS(), b = !Euler();
            if (a || b)
                printf("The door cannot be opened.
    ");
            else
                printf("Ordering is possible.
    ");
        }
        return 0;
    }
  • 相关阅读:
    Python 规范
    Hql
    Python
    IIS 日志分析
    NHibernate 知识点整理
    微软开放了.NET 4.5.1的源代码
    自定义消息编码绑定实现
    使用自定义绑定
    WCF安全:通过 扩展实现用户名密码认证
    WCF 几种错误
  • 原文地址:https://www.cnblogs.com/schsb/p/7868158.html
Copyright © 2011-2022 走看看