hdu1181(深搜 存有向图(用矩阵))
//也可以用生成树的思想做,但要注意是有向边
//生成树的做法:http://blog.sina.com.cn/s/blog_64107d290100h59k.html
#include<stdio.h> #include<string.h> int s,e,flag; int vis[10009],map[1009][1009]; void dfs(int a) { int i; if(a==e) flag=1; if(flag) return; vis[a]=1; for(i=0;i<26;i++) { if(map[a][i]&&!vis[i]) dfs(i); } } int main() { char str[10009]; while(scanf("%s",&str)!=EOF) { s=1;e=12; if(str[0]!='0') { map[str[0]-'a'][str[strlen(str)-1]-'a']=1; //用map来存有向图(用矩阵的形式,若a->b则map[a][b]=1) } else { dfs(1); if(flag==1) printf("Yes.\n"); else printf("No.\n"); memset(map,0,sizeof(map)); memset(vis,0,sizeof(vis)); flag=0; } } }