杭电1181

DFS深度优先搜索

 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 int a[26][26];
 5 char s[1000];
 6 int ans=0;
 7 
 8 int lenth(char s[]);
 9 void dfs(int);
10 
11 int main()
12 {
13     int len;
14     while(~scanf("%s",s))
15     {
16         if(s[0]=='0')
17         {
18             dfs(1);
19             memset(a,0,sizeof a);
20             if(ans)
21                 printf("Yes.\n");
22             else
23                 printf("No.\n");
24             ans=0;
25             continue;
26         }
27         len=lenth(s);
28         a[s[0]-'a'][s[len-1]-'a']=1;
29     }
30 }
31 
32 int lenth(char s[])
33 {
34     int x=0;
35     while(s[x]!='\0')
36         ++x;
37     return x;
38 }
39 
40 void dfs(int x)
41 {
42     int i;
43     for(i=0; i<26; ++i)
44     {
45         if(a[x][12])    //12即m
46         {
47             ans=1;
48             return;
49         }
50         if(a[x][i])
51         {
52             a[x][i]=0;
53             dfs(i);
54             a[x][i]=1;
55         }
56     }
57 }

 

posted @ 2016-11-30 15:29  Posase  阅读(163)  评论(0编辑  收藏  举报