简单的深搜,没啥好说的
#include<iostream>
#include<cstring>
using namespace std;
string a[100];
int b[100]={0};
int flag,t;
void dfs(int x)
{
if(a[x][0]=='b')
{
flag=1;return;
}
b[x]=1;
for(int i=0;i<=t-1;i++)
{
if(flag){return ;}
if(a[i][a[i].size()-1]==a[x][0]&&!b[i]) dfs(i);
b[i]=0;
}
b[x]=0;
}
int main()
{
string s;
t=0;
while(cin>>s)
{
if(s[0]!='0') a[t]=s,t++;
else
{
flag=0;
for(int i=0;i<=t-1;i++)
{
if(a[i][a[i].size()-1]=='m') memset(b,0,sizeof(b)),dfs(i);
}
if(flag) cout<<"Yes."<<endl;
else cout<<"No."<<endl;
t=0;
}
}
return 0;
}