洛谷1341 无序字母对 欧拉路
2016-11-14 17:17
246 查看
#include<iostream> #include<cstdio> using namespace std; char a[4]; int vis[55][55]; int f(char s) { if(s>='A'&&s<='Z') return s-'A'+1; return s-'a'+27; } int cd[55]; int jd[55],cnt; void print(int x) { char c; if(x<=26) c=x+'A'-1; else c=x+'a'-27; putchar(c); } int S[1005],top; void dfs(int x) { for(int i=1;i<=52;i++) { if(vis[x][i]) { vis[x][i]=vis[i][x]=0; dfs(i); S[++top]=i; } } } int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%s",a); int p1=f(a[0]),p2=f(a[1]); vis[p1][p2]=vis[p2][p1]=1; cd[p1]++;cd[p2]++; } for(int i=1;i<=52;i++) if(cd[i]%2) jd[++cnt]=i; if(cnt>2) puts("No Solution"); else { if(cnt>=1) { dfs(jd[1]); S[++top]=jd[1]; } else { for(int i=1;i<=53;i++) if(cd[i]) { cnt=1,jd[1]=i; dfs(i); S[++top]=i; break; } } while(top) { print(S[top]); top--; } } return 0; }
相关文章推荐
- 洛谷1341 无序字母对(欧拉路)
- 洛谷P1341 无序字母对[无向图欧拉路]
- 洛谷1341无序字母对(无向图欧拉回路)
- 欧拉回路 (洛谷1341 无序字母对)
- 无序字母对_洛谷1341_欧拉回路
- 洛谷1341 无序字母对
- 无序字母对 洛谷 1341 欧拉通路/欧拉回路
- [洛谷1341]无序字母对---欧拉回路/通路
- 洛谷P1341 无序字母对
- [洛谷1314]无序字母对
- 洛谷 P1341 无序字母对
- 洛谷 P1341无序字母对
- 洛谷P1341 无序字母对(欧拉回路)
- [luogu1341]无序字母对
- 洛谷 P1341 无序字母对 题解
- 洛谷 P1341 无序字母对
- 洛谷 [P1341]无序字母对
- 洛谷1341 无序字母对 欧拉路
- 洛谷P1341 无序字母对
- 欧拉回路——洛谷 P1341 无序字母对