mirror of
https://git.sb/baoshuo/OI-codes.git
synced 2024-11-05 09:18:47 +00:00
79 lines
1.2 KiB
C++
79 lines
1.2 KiB
C++
|
#include <iostream>
|
||
|
#include <cstring>
|
||
|
#include <set>
|
||
|
|
||
|
using std::cin;
|
||
|
using std::cout;
|
||
|
const char endl = '\n';
|
||
|
|
||
|
const int N = 1005;
|
||
|
|
||
|
int n, cnt, s, t, deg[N], ans[N];
|
||
|
int g[N][N];
|
||
|
std::set<char> nodes;
|
||
|
|
||
|
void dfs(char u) {
|
||
|
for (int i = 1; i <= 128; i++) {
|
||
|
if (g[u][i]) {
|
||
|
g[u][i]--;
|
||
|
g[i][u]--;
|
||
|
|
||
|
dfs(i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ans[++cnt] = u;
|
||
|
}
|
||
|
|
||
|
int main() {
|
||
|
std::ios::sync_with_stdio(false);
|
||
|
cin.tie(nullptr);
|
||
|
|
||
|
cin >> n;
|
||
|
|
||
|
for (int i = 1; i <= n; i++) {
|
||
|
char u, v;
|
||
|
|
||
|
cin >> u >> v;
|
||
|
|
||
|
g[u][v]++, g[v][u]++;
|
||
|
deg[u]++, deg[v]++;
|
||
|
|
||
|
nodes.insert(u);
|
||
|
nodes.insert(v);
|
||
|
}
|
||
|
|
||
|
int x = 0;
|
||
|
|
||
|
t = *nodes.rbegin();
|
||
|
|
||
|
for (const char &node : nodes) {
|
||
|
if (deg[node] & 1) {
|
||
|
x++;
|
||
|
|
||
|
if (!s) s = node;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (!s) s = *nodes.begin();
|
||
|
|
||
|
if (x && x != 2) {
|
||
|
cout << "No Solution" << endl;
|
||
|
|
||
|
exit(0);
|
||
|
}
|
||
|
|
||
|
dfs(s);
|
||
|
|
||
|
if (cnt <= n) {
|
||
|
cout << "No Solution" << endl;
|
||
|
} else {
|
||
|
for (int i = cnt; i; i--) {
|
||
|
cout << (char)(ans[i]);
|
||
|
}
|
||
|
cout << endl;
|
||
|
}
|
||
|
|
||
|
return 0;
|
||
|
}
|