#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.
数据范围与提示
- 每组数据中单词个数不超过 。
- 每个单词仅含小写字母,长度不超过 。
- 数据组数不超过 。
- 每组数据处理时,把每个单词看作一条从首字母指向末字母的有向边,问题即判断字母
b能否到达字母m,用 DFS 或 BFS 在 个结点的图上搜索即可。 - 注意多组数据之间要清空图与访问标记。