这道题真心没什么好说的,直接深搜。但是我竟然WA了10次,知道为什么吗?因为我把输出结果的Yes打成了YES。刚接触ACM的时候才会犯的错误啊!
#include<stdio.h>
#include<string.h>
char a[30000][2000];
int n,p[30000];
int dfs(char cur)
{
//printf("%c\n",cur);
if(cur=='m')
return 1;
for(int i=1;i<=n;i++)
{
if(!p[i]&&a[i][0]==cur)
{
p[i]=1;
if(dfs(a[i][strlen(a[i])-1]))
return 1;
}
}
return 0;
}
int main()
{
int i;
while(scanf("%s",a[1])!=EOF)
{
n=1;
while(scanf("%s",a[++n])!=EOF&&a[n][0]!='0');
memset(p,0,sizeof(p));
for(i=1;i<=n;i++)
{
if(a[i][0]=='b')
{
p[i]=1;
if(dfs(a[i][strlen(a[i])-1]))
break;
}
}
if(i>n)
printf("No.\n");
else
printf("Yes.\n");
}
return 0;
}