10129 - Play on Words (UVA)

题目链接如下:

Online Judge

欧拉道路的题。

有向图满足欧拉道路有两个条件:1,图是连通的;2,最多只能有两个点的出度不等于入度,而且其中一个点的出度比入度大1,一个点的入度比出度大1.

我的代码如下:

#include <iostream>
#include <string>
#include <algorithm>
#include <map>
// #define debug

int T, N;
std::string str;
int degree[26];
int mat[26][26];
int visited[26];

void dfs(int k){
    visited[k] = 0;
    for (int i = 0; i < 26; ++i){
        if (visited[i] && mat[k][i]){
            dfs(i);
        }
    }
}

int main(){
    #ifdef debug
    freopen("0.txt", "r", stdin);
    freopen("1.txt", "w", stdout);
    #endif
    scanf("%d", &T);
    while (T--){
        std::fill(degree, degree + 26, 0);
        std::fill(mat[0], mat[0] + 26 * 26, 0);
        std::fill(visited, visited + 26, 0);
        scanf("%d", &N);
        while (N--){
            std::cin >> str;
            degree[str[0] - 'a']++;
            degree[str.back() - 'a']--;
            mat[str[0] - 'a'][str.back() - 'a']++;
            visited[str[0] - 'a'] = 1;
            visited[str.back() - 'a'] = 1;
        }
        std::map<int, int> mp;
        bool flag = true;
        for (int i = 0; i < 26; ++i){
            if (degree[i] < -1 || degree[i] > 1){
                flag = false;
                break;
            }
            if (degree[i] == -1){
                mp[-1]++;
            } else if (degree[i] == 1){
                mp[1]++;
            }
        }
        if (!flag || mp[-1] > 1 || mp[1] > 1 || mp[-1] != mp[1]){
            printf("The door cannot be opened.\n");
            continue;
        }
        int cnt = 0;
        for (int i = 0; i < 26; ++i){
            if (visited[i]){
                cnt++;
                dfs(i);
            }
        }
        if (cnt == 1){
            printf("Ordering is possible.\n");
        } else {
            printf("The door cannot be opened.\n");
        }
    }
    #ifdef debug
    fclose(stdin);
    fclose(stdout);
    #endif
    return 0;
}

相关推荐

  1. 10129 - Play on Words (UVA)

    2023-12-16 05:48:06       45 阅读
  2. Play on Words(UVA 10129

    2023-12-16 05:48:06       15 阅读
  3. 1019 数字黑洞

    2023-12-16 05:48:06       16 阅读
  4. pat乙1029-旧键盘

    2023-12-16 05:48:06       19 阅读
  5. PAT B1012. 数字分类

    2023-12-16 05:48:06       7 阅读
  6. 浙江大学 → PAT 1012:数字分类

    2023-12-16 05:48:06       15 阅读
  7. CF1029E Tree with Small Distances 题解

    2023-12-16 05:48:06       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-16 05:48:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-16 05:48:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-16 05:48:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-16 05:48:06       18 阅读

热门阅读

  1. word如何快速制作简易代码块

    2023-12-16 05:48:06       38 阅读
  2. 「CocoaPods」Podfile文件模板

    2023-12-16 05:48:06       43 阅读
  3. MySQL DQL

    MySQL DQL

    2023-12-16 05:48:06      36 阅读
  4. 【C#】Microsoft C# 之 LINQ 查询语法视频学习总结

    2023-12-16 05:48:06       29 阅读
  5. React Hooks学习指北

    2023-12-16 05:48:06       33 阅读
  6. 下载文件 后端返回给前端 response header 响应头

    2023-12-16 05:48:06       43 阅读
  7. Vue3+Ts项目——登录页面跳转到首页

    2023-12-16 05:48:06       39 阅读
  8. 7.3 lambda函数

    2023-12-16 05:48:06       35 阅读
  9. 快速入门HTML

    2023-12-16 05:48:06       31 阅读