洛谷1341 无序字母对


题目描述

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

输入输出格式

输入格式

第一行输入一个正整数n。
以下n行每行两个字母,表示这两个字母需要相邻。

输出格式

输出满足要求的字符串。
如果没有满足要求的字符串,请输出“No Solution”。
如果有多种方案,请输出前面的字母的ASCII编码尽可能小的(字典序最小)的方案

思路

显然,这是一道典型的欧拉回路,每读入两个字母就给这两个字母连一条无向边,跑一边欧拉回路就行了。

代码

#include
using namespace std;
const int maxn=300+5; 
int G[maxn][maxn]; 
int deg[maxn]; 
char tmp[maxn]; 
char ch[maxn*maxn];
int n;
void dfs(int i){ 
    for(int j=0;j