Codeforces Round #288 (Div. 2) D Tanya and Password
2015-03-23 11:20
281 查看
裸欧拉路,至于对欧拉路不了解的同学可以看本博客里对欧拉路的解释。
对于abc这个字符串,把ab、bc分别看成一个点连接一条边,然后直接欧拉路即可。
下面是AC代码:
对于abc这个字符串,把ab、bc分别看成一个点连接一条边,然后直接欧拉路即可。
下面是AC代码:
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<vector> using namespace std; vector<int >g[10005]; int vis[100005]; int in[10005],out[10005],use[10005]; char c[6]; int a[200005],cnt; int change(char c){ if(c>='a'&&c<='z') return c-'a'; if(c>='A'&&c<='Z') return 26+c-'A'; return 52+c-'0'; } void add(int a,int b){ g[a].push_back(b); } int e,flag; int it[10005]; void dfs(int u,int ee){ int p; p=(int)g[u].size(); while(it[u]<p){ int m=it[u]; it[u]++; use[g[u][m]]=1; dfs(g[u][m],0); } a[cnt++]=u; } int c2(int x){ if(x>=0&&x<=25) return x+'a'; if(x>=26&&x<=51){ return x-26+'A'; } return x-52+'0'; } int c1(int p){ int x; x=p/100; return c2(x); } int main() { int i,n,m; int aa,b,p; cin>>n; for(i=0;i<n;i++){ scanf("%s",c); aa=change(c[0]); b=change(c[1]); p=change(c[2]); add(aa*100+b,b*100+p); in[b*100+p]++; out[aa*100+b]++; e+=2; } int x=0,y=0; m=0; for(i=0;i<=10000;i++){ if(in[i]!=out[i]){ if(in[i]==out[i]+1){ x++; } else if(out[i]==in[i]+1){ y++; } else{ m=1; } } } if(!((x==0&&y==0)||(x==1&&y==1))) m=1; if(m) printf("NO\n"); else{ if(x==0){ for(i=0;i<=10000;i++){ if(in[i]!=0){ use[i]=1; dfs(i,0); break; } } } else{ for(i=0;i<=10000;i++){ if(out[i]==in[i]+1){ use[i]=1; dfs(i,0); break; } } } for(i=0;i<=10000;i++){ if(!(in[i]==0&&out[i]==0)){ if(!use[i]){ m=1; break; } } } if(m) printf("NO\n"); else{ printf("YES\n"); printf("%c",c2(a[cnt-1]/100)); for(i=cnt-1;i>=0;i--){ printf("%c",c2(a[i]%100)); } } } }
相关文章推荐
- Codeforces Round #288 (Div. 2) D. Tanya and Password 欧拉回路
- Codeforces Round #288 (Div. 2) D. Tanya and Password (欧拉通路)
- Codeforces Round #288 (Div. 2)-D. Tanya and Password(欧拉路径及其打印)
- Codeforces Round #288 (Div. 2) D.Tanya and Password(欧拉路径)
- Codeforces Round #288 (Div. 2)---D. Tanya and Password
- Codeforces Round #288 (Div. 2) D. Tanya and Password
- Codeforces Round #288 (Div. 2) D. Tanya and Password 欧拉通路
- Codeforces Round #288 (Div. 2)D. Tanya and Password 欧拉通路
- Codeforces Round #288 (Div. 2)---D. Tanya and Password
- Codeforces Round #288 (Div. 2)D.Tanya and Password——欧拉通路
- Codeforces 584 B. Kolya and Tanya (Codeforces Round #324 (Div. 2))
- codeforces - 508D - Tanya and Password(欧拉通路)
- codeforecs--D. Tanya and Password(输出欧拉路径)
- Codeforces Round #293 (Div. 2) B. Tanya and Postcard 水题
- Codeforces Round #324 (Div. 2) B. Kolya and Tanya
- Codeforces Round #394 (Div. 2) Dasha and Password
- Codeforces Round #394 (Div. 2)C. Dasha and Password【暴力】
- Codeforces Round #394 (Div. 2) C. Dasha and Password
- Codeforces Round #346 (Div. 2)--C. Tanya and Toys
- codeforces 508 D. Tanya and Password (fleury算法)