zoukankan      html  css  js  c++  java
  • p1341 无序字母对

    传送门

    题目

    给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒)。请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现。

    输入格式:

    第一行输入一个正整数n。

    以下n行每行两个字母,表示这两个字母需要相邻。

    输出格式:

    输出满足要求的字符串。

    如果没有满足要求的字符串,请输出“No Solution”。

    如果有多种方案,请输出前面的字母的ASCII编码尽可能小的(字典序最小)的方案

    分析

    任意俩字母的相邻关系可表示为一条路径,所以在相邻字母间连边,跑字典序最小欧拉回路即可。注意大写字母ASCII码比小写字母小!

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cctype>
    #include<cmath>
    #include<cstdlib>
    #include<ctime>
    #include<queue>
    #include<vector>
    #include<set>
    #include<map>
    #include<stack>
    using namespace std;
    int n,m,minn=1000000007;
    int g[1100][1100],du[11000],ans[110000],cnt;
    void go(int x){
          int i,j,k;
          for(i=minn;i<=n;i++)
             if(g[x][i]){
                 g[x][i]--,g[i][x]--;
                 go(i);
             }
          ans[++cnt]=x;
    }
    int main(){
          int i,j,k,x,y;
          string s;
          cin>>m;
          for(i=1;i<=m;i++){
               cin>>s;
               x=s[0]-'A';
               y=s[1]-'A';
               g[x][y]++,g[y][x]++;
               du[x]++,du[y]++;
               n=max(n,max(x,y));
               minn=min(minn,min(x,y));
          }
          int st=minn;
          int sum=0,chg=0;
          for(i=minn;i<=n;i++)
             if(du[i]&1){
                 sum++;
                 if(!chg){
                 st=i;
                 chg=1;
                }
             }
          if(sum!=0&&sum!=2){
            puts("No Solution");
            return 0;
          }
          go(st);
          for(i=cnt;i>0;i--){
             char c=ans[i]+'A';
             cout<<c;
          }
          return 0;
    }

  • 相关阅读:
    tracteroute路由追踪
    搭建Weblogic服务器
    Logview_pro破解版
    Spring Boot 如何在类中应用配置文件
    使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
    springboot 项目中控制台打印日志以及每天生成日志文件
    springboot输出日志到指定目录,简单粗暴,springboot输出mybatis日志
    spring boot 发布成包所需插件
    spring注解
    Multicast注册中心
  • 原文地址:https://www.cnblogs.com/yzxverygood/p/9097329.html
Copyright © 2011-2022 走看看