zoukankan      html  css  js  c++  java
  • [P1341]无序字母对 (欧拉回路)

    我永远信仰欧拉

    欧拉回路是很经典的一道题目了

    这题算是稍稍修改的模板题吧

    欢迎指出错误

    题目链接

    思路

    先判断能不能构成欧拉路径/回路

    即度数为1的总点数为2或0的时候符合(前者为连通图,后者为回路)

    这题是回路吧

    如果不可以,结束

    如果可以,dfs搜索路径(貌似搜索路径还有模板来着)

    代码

    代码短,我就不压了

     1 #include<bits/stdc++.h>
     2 #define maxn 257
     3 bool G[maxn][maxn];
     4 int deg[maxn];
     5 char tmp[maxn],res[maxn * maxn];
     6 int n;
     7 void dfs(int i) {
     8     for (int j = 0; j < maxn; j++) {
     9         if (G[i][j]) {
    10             G[i][j] = G[j][i] = 0;
    11             dfs(j);
    12         }
    13     }
    14     res[n--] = i;
    15 }
    16 int main()
    17 {
    18     scanf("%d", &n);
    19     for (int i = 0; i < n; i++) {
    20         scanf("%s", tmp);
    21         G[tmp[0]][tmp[1]] = G[tmp[1]][tmp[0]] = 1;
    22         deg[tmp[0]]++;
    23         deg[tmp[1]]++;
    24     }
    25     char fir = 0, cnt = 0;
    26     for (int i = 0; i < maxn; i++) {
    27         if (deg[i] & 1) {
    28             cnt++;
    29             if (!fir) fir = i;
    30         }
    31     }
    32     if (!fir) for (int i = 0; i < maxn; i++) if (deg[i]) { fir = i; break; }
    33     if (cnt && cnt != 2) return puts("No Solution"), 0;
    34     dfs(fir);
    35     puts(res);
    36 }
  • 相关阅读:
    Python使用inspect查看代码参数
    Python的hasattr() getattr() setattr()
    Module-GitBook使用手册
    Module-Hadoop技术文档
    Module-Git使用手册
    Module-Faker使用手册
    Module-Docker使用手册
    Module-DB2技术文档
    Module-Dask并行任务调度
    Module-Apache使用说明
  • 原文地址:https://www.cnblogs.com/lincold/p/9863838.html
Copyright © 2011-2022 走看看