题目 http://acm.hdu.edu.cn/showproblem.php?pid=1181
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char sc[26][26],mark[26]; ///这个地方很巧哦
char a[10000][50];
int flag;
void DFS(int x)
{
if(x==12) {flag=1; return ;}
mark[x]=1;
for(int j=0;j<26;j++)
{
if(sc[x][j]&&!mark[j])
{
DFS(j);
}
}
}
int main()
{
int i=0;
flag=0;
while(scanf("%s",a[i])!=EOF)
{
if(a[i][0]=='0')
{
DFS(1);
///这个是从b开始哦。
if(flag)
{
cout<<"Yes."<<endl;
}
else cout<<"No."<<endl;
i=0;
memset(a,'0',sizeof(a));
memset(sc,0,sizeof(sc));
memset(mark,0,sizeof(mark));
flag=0;
}
else {
int b1=a[i][0]-'a';
int k=strlen(a[i]);
int b2=a[i][k-1]-'a';
sc[b1][b2]=1;
i++;
}
}
return 0;
}