hdu 1116

来源:互联网 发布:剑灵人族大叔捏脸数据 编辑:程序博客网 时间:2024/05/13 16:50

OJ

#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <vector>#include <map>#include <set>#include <string>#include <cstring>#include <list>#include <queue>#include <stack>#include <cmath>using namespace std;#define PF(x) (scanf("%d",&x))#define PT(x,y) (scanf("%d%d",&x,&y))#define PR(x) (printf("%d\n",x))#define PRT(x,y)(printf("%d %d\n",x,y))#define PB(x)(scanf("%I64d",&x))#define PRB(x)(printf("%I64d\n",(x)))#define N 1005#define M 105#define Mod 1000#define Inf 0x7fffffffint maps[M][M];char str[N];int n;int degree[N];int ind[N];int vis[N];void reinit(){memset(maps,0,sizeof(maps));memset(degree,0,sizeof(degree));memset(ind,0,sizeof(ind));memset(vis,0,sizeof(vis));}void dfs(int v){for(int i=0;i<26;i++)if(maps[v][i] && !vis[i]) {vis[i] = 1;dfs(i);}}void init(){int test;PF(test);while(test--){reinit();PF(n);for(int i=0;i<n;i++){scanf("%s",str);char ch = str[0];char chs = str[strlen(str)-1];maps[ch-'a'][chs-'a']=1;maps[chs-'a'][ch-'a']=1;degree[chs-'a'] ++;ind[ch-'a']++;}int index = -1;bool flag = false;int out =0;int in = 0;int odd = 0;for(int i=0;i<26;i++){for(int j=0;j<26;j++){if(maps[i][j]) {vis[i]=1;dfs(i);goto lapel;}}}lapel:for(int i=0;i<26;i++)for(int j=0;j<26;j++)if(maps[i][j]&&(!vis[i] ||!vis[j])){flag = true;break;}     if(flag) {puts("The door cannot be opened.");continue;}for(int i=0;i<26;i++){if(ind[i]!=degree[i]){if(ind[i]+1==degree[i]) out++;else if(ind[i] == degree[i]+1) in++;else odd++;}}if(odd) {puts("The door cannot be opened.");continue;}if(out == 1 && in == 1){puts("Ordering is possible.");}else if(out == 0 && in==0){puts("Ordering is possible.");}else puts("The door cannot be opened.");}return ;}int main(){init();return 0;}


原创粉丝点击