#1240. 变形课

变形课

变形课

题目描述

呃……变形课上 Harry 碰到了一点小麻烦,因为他并不像 Hermione 那样能够记住所有的咒语而随意地把一个棒球变成刺猬什么的。但是他发现了变形咒语的一个统一规律:如果一个咒语是以字母 a 开头、以字母 b 结尾的一个单词,那么它的作用就恰好是使 A 物体变成 B 物体。

例如:咒语 big 以 b 开头以 g 结尾,它就能把 B 物体变成 G 物体;咒语 got 以 g 开头以 t 结尾,它就能把 G 物体变成 T 物体;咒语 them 以 t 开头以 m 结尾,它就能把 T 物体变成 M 物体。于是 big → got → them 就可以把 B(ball) 变成 M(Mouse)。

Harry 已经把他所会的所有咒语都列成了一个表,他想让你帮忙计算一下他是否能完成老师的作业:把一个 B(ball) 变成一个 M(Mouse)。

输入格式

测试数据有多组,读到文件末尾为止。

每组数据有多行,每行一个单词,单词仅由小写英文字母组成,是 Harry 所会的所有咒语。每组数据以单独一行的一个数字 0 表示该组输入结束。

输出格式

对每组数据输出一行:如果 Harry 能够把 B 变成 M,输出 Yes.,否则输出 No.。

注意不要忽略了末尾的句号。

样例输入

so
soon
river
goes
them
got
moon
begin
big
0

样例输出

Yes.

数据范围与提示

  • 每组数据中单词个数不超过 100000100000。
  • 每个单词仅含小写字母,长度不超过 3030。
  • 数据组数不超过 100100。
  • 每组数据处理时,把每个单词看作一条从首字母指向末字母的有向边,问题即判断字母 b 能否到达字母 m,用 DFS 或 BFS 在 2626 个结点的图上搜索即可。
  • 注意多组数据之间要清空图与访问标记。