HDU 1181 变形课 BFS 水过。。。

题目理解听想人,就是看有没有办法让b变成m。

View Code
 1 #include<stdio.h>
 2 #include<string.h>
 3 int q[100000];
 4 int map[30][30];
 5 int pro[100000];
 6 int f,r;
 7 
 8 int main()
 9 {
10     int n,i,j,len,leap;
11     char s[200];
12     while(scanf("%s",s) != EOF)
13     {
14         leap = 0;
15         memset(map,0,sizeof(map));
16         memset(pro,0,sizeof(pro));
17         memset(q,0,sizeof(q));
18         len = strlen(s);
19         map[s[0]-'a'][s[len-1]-'a'] = 1;
20 
21         while(scanf("%s",s) != EOF)
22         {
23             len = strlen(s);
24             if(s[0] == '0')
25             break;
26             map[s[0]-'a'][s[len-1]-'a'] = 1;
27         }
28         f = 0,r = 0;
29         q[r++] = 'b'-'a';
30         while(f < r)
31         {
32             int v;
33             v = q[f++];
34             for(i = 0;i < 26;i++)
35             {
36                 if(map[v][i] && !pro[i])
37                 {
38                     if(i == 'm'-'a')
39                     {
40                         leap = 1;
41                         break;
42                     }
43                     q[r++] = i;
44                     pro[i] = 1;
45                 }
46             }
47             if(leap)
48             break;
49         }
50         if(leap)
51         puts("Yes.");
52         else
53         puts("No.");
54     }
55     return 0;
56 }
posted @ 2012-07-31 18:54  某某。  阅读(156)  评论(0编辑  收藏  举报