hdu 1116 欧拉回路

来源:互联网 发布:电视市场软件 编辑:程序博客网 时间:2024/06/04 19:52



#include<stdio.h>#include<string.h>int cas,n,pre[30],vst[30],in[30],out[30];struct point{int u,v;}eg[100000];int find(int w){int now,root=w;while(root!=pre[root])root=pre[root];while(pre[w]!=root){now=pre[w];pre[w]=root;w=now;}return root;}int main(){scanf("%d",&cas);while(cas--){bool flag=true;scanf("%d",&n);for(int i=0;i<26;i++){pre[i]=i;vst[i]=0;in[i]=0;out[i]=0;}for(int i=0;i<n;i++){char s[10000];scanf("%s",s);int u=s[0]-'a',v=s[strlen(s)-1]-'a';eg[i].u=u;eg[i].v=v;out[u]++;in[v]++;vst[u]=1;vst[v]=1;int x=find(u),y=find(v);if(x!=y)pre[y]=x;}int k=0,o1=0,i1=0;for(int i=0;i<26;i++)if(vst[i]&&pre[i]==i)if((++k)>1)flag=false;for(int i=0;i<26;i++)if(vst[i]){if(out[i]-in[i]>1||in[i]-out[i]>1){flag=false;break;}if(out[i]-in[i]==1)if((++o1)>1){flag=false;break;}if(in[i]-out[i]==1)if((++i1)>1){flag=false;break;}}if(flag)printf("Ordering is possible.\n");elseprintf("The door cannot be opened.\n");}return 0;}


原创粉丝点击