变形课
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)
Total Submission(s): 19133 Accepted Submission(s):
6892
Problem Description
呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个统一规律:如果咒语是以a开头b结尾的一个单词,那么它的作用就恰好是使A物体变成B物体.
Harry已经将他所会的所有咒语都列成了一个表,他想让你帮忙计算一下他是否能完成老师的作业,将一个B(ball)变成一个M(Mouse),你知道,如果他自己不能完成的话,他就只好向Hermione请教,并且被迫听一大堆好好学习的道理.
Harry已经将他所会的所有咒语都列成了一个表,他想让你帮忙计算一下他是否能完成老师的作业,将一个B(ball)变成一个M(Mouse),你知道,如果他自己不能完成的话,他就只好向Hermione请教,并且被迫听一大堆好好学习的道理.
Input
测试数据有多组。每组有多行,每行一个单词,仅包括小写字母,是Harry所会的所有咒语.数字0表示一组输入结束.
Output
如果Harry可以完成他的作业,就输出"Yes.",否则就输出"No."(不要忽略了句号)
Sample Input
so
soon
river
goes
them
got
moon
begin
big
0
Sample Output
Yes.
Hint
Hint第二次做这道题,开始超时了。
提前预判要不要进行对该节点扩展,不要调用dfs然后判断改点是不是能扩展。就因为这原因超时的
15ms
1 /******************************* 2 3 Date : 2015-12-08 21:36:48 4 Author : WQJ (1225234825@qq.com) 5 Link : http://www.cnblogs.com/a1225234/ 6 Name : hdu 1181 7 8 ********************************/ 9 #include <iostream> 10 #include <cstdio> 11 #include <algorithm> 12 #include <cmath> 13 #include <cstring> 14 #include <string> 15 #include <set> 16 #include <vector> 17 #include <queue> 18 #include <stack> 19 #define LL long long 20 using namespace std; 21 int k; 22 char ch[500][2]; 23 char a[50]; 24 bool flag; 25 bool vis[500]; 26 void dfs(int n) 27 { 28 int i,j; 29 vis[n]=1; 30 if(ch[n][1]=='m') 31 { 32 flag=1; 33 return; 34 } 35 for(i=0;i<k;i++) 36 { 37 if(ch[i][0]==ch[n][1]) 38 { 39 if(vis[i]) continue; 40 dfs(i); 41 vis[i]=0; 42 if(flag) return; 43 } 44 } 45 return; 46 } 47 int main() 48 { 49 freopen("in.txt","r",stdin); 50 int i,j; 51 while(scanf("%s",ch[0])!=EOF) 52 { 53 int len=strlen(ch[0]); 54 ch[0][1]=ch[0][len-1]; 55 for(i=1;;i++) 56 { 57 scanf("%s",a); 58 if(a[0]=='0') 59 break; 60 int len=strlen(a); 61 ch[i][0]=a[0]; 62 ch[i][1]=a[len-1]; 63 } 64 k=i+1; 65 flag=0; 66 memset(vis,0,sizeof(vis)); 67 for(i=0;i<k;i++) 68 { 69 if(ch[i][0]=='b') 70 { 71 dfs(i); 72 vis[i]=0; 73 } 74 } 75 printf("%s ",flag?"Yes.":"No."); 76 } 77 return 0; 78 }