变形课
http://acm.hdu.edu.cn/diy/contest_showproblem.php?cid=12573&pid=1008
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)
Total Submission(s) : 2 Accepted Submission(s) : 1
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Harry已经将他所会的所有咒语都列成了一个表,他想让你帮忙计算一下他是否能完成老师的作业,将一个B(ball)变成一个M(Mouse),你知道,如果他自己不能完成的话,他就只好向Hermione请教,并且被迫听一大堆好好学习的道理.
Input
Output
Sample Input
so soon river goes them got moon begin big 0
Sample Output
Yes.
Hint
Harry 可以念这个咒语:"big-got-them".
Source
#include<iostream>
#include<cstring>
using namespace std;
const int N=26;
int map[N+1][N+1];
bool visited[N+1];
char s[50];
int flag,d=12; //始点是1(b),终点是12(m)
void dfs(int s){
if(s==d)
flag=1;
if(flag==1)
return ;
for(int i=0;i<N;i++){
if(map[s][i] && !visited[i]){
visited[i]=1;
dfs(i);
visited[i]=0;
}
}
return ;
}
int main(){
int len,a,b;
while(cin>>s){
if(s[0]=='0') continue;
memset(map,0,sizeof(map));
memset(visited,0,sizeof(visited));
while(s[0]!='0'){
len=strlen(s);
a=s[0]-'a'; b=s[len-1]-'a'; //将a--z转化为数字保存
map[a][b]=1;
scanf("%s",s);
}
flag=0;
visited[1]=1; //始点
dfs(1);
if(flag==1)
printf("Yes.\n");
else
printf("No.\n");
}
return 0;
}