刚开始RE了好几次;
#include"stdio.h" #include"string.h" #include"queue" using namespace std; int f; int mark[26]; int map[26][26]; void bfs(int a) { queue<int>Q; int i,t; t=a; Q.push(t); mark[t]=1; while(!Q.empty()) { t=Q.front(); Q.pop(); for(i=0;i<26;i++) { if(map[t][i]==1&&mark[i]==0) { if(i==12) { f=1;break; } Q.push(i); } } if(f==1)break; } } int main() { char str[1001]; int t; memset(map,0,sizeof(map)); memset(mark,0,sizeof(mark)); f=0; while(gets(str)) { if(str[0]=='0') { f=0; bfs(1); if(f==1){printf("Yes.\n");f=2;} else {printf("No.\n");f=2;} memset(mark,0,sizeof(mark)); memset(map,0,sizeof(map)); } if(f!=2)//如果此时str=“0”就不需要执行这一步; { t=strlen(str); map[str[0]-'a'][str[t-1]-'a']=1; } } return 0; }