很容易看出是FLOYD。
最开始莫名地WA :-(
/*
* HDU-????
* mike-w
* 2012-9-25
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAXN 32
#define BUFSIZE 256
#define nDISP_MATRIX
int f[MAXN][MAXN];
int read(void)
{
char buf[BUFSIZE];
int c=0;
while(scanf("%s", buf) !=EOF && buf[0]!='0')
f[buf[0]-'a'][buf[strlen(buf)-1]-'a']=1, c++;
return c;
}
int main(void)
{
#ifndef ONLINE_JUDGE
freopen("in", "r", stdin);
#endif
int i, j, k;
while(read())
{
#ifdef DISP_MATRIX
for(i=0; i<MAXN; i++)
for(j=0; j<MAXN; j++)
if(f[i][j])
printf("%c -> %c\n", i+'a', j+'a');
#endif
for(i=0; i<MAXN; i++)
for(j=0; j<MAXN; j++)
for(k=0; k<MAXN; k++)
if(f[j][i] && f[i][k])
f[j][k]=1;
puts(f['b'-'a']['m'-'a']?"Yes.":"No.");
memset(f, 0, sizeof(f));
}
return 0;
}