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;
		}
	}
}

 

posted @ 2013-04-14 15:47  宛如  阅读(160)  评论(0编辑  收藏  举报