#P1883. Theseus and the Minotaur

Theseus and the Minotaur

描述

那些接受过古典教育的人可能还记得忒修斯和弥诺陶洛斯的传说。这是一个不太可能发生的故事,涉及一个牛头怪物、失恋的少女、丝线球和一个地下迷宫,里面充满了弯弯曲曲、彼此相似的小通道。本着本次比赛的教育性质,我们现在将揭示真实的故事。

迷宫是一系列由通道连接的洞穴。忒修斯设法将一批蜡烛和一小管磷光涂料偷偷带入迷宫,他可以用这些涂料标记自己的路径,或者更具体地说,标记他使用过的出口。他知道自己会被放入两个洞穴之间的通道中,如果他能找到并杀死弥诺陶洛斯,就会被释放。他的策略是沿着通道小心翼翼地前进,直到到达一个洞穴,然后向右转(他是左撇子,希望让剑远离墙壁),沿着洞穴边缘摸索,直到找到一个出口。如果这个出口没有被标记,他会标记它并进入;如果已经被标记,他会忽略它,继续绕着洞穴走。如果他在洞穴里听到弥诺陶洛斯的声音,他会点燃一支蜡烛并杀死弥诺陶洛斯,因为弥诺陶洛斯会被光线刺瞎。然而,如果他在通道里遇到弥诺陶洛斯,他就会陷入困境,因为通道的大小会限制他的行动,他既无法点燃蜡烛,也无法充分战斗。当他进入一个弥诺陶洛斯之前进入过的洞穴时,他会点燃一支蜡烛并留在那里,然后像往常一样向右转,但会选择弥诺陶洛斯的出口,忽略他之前的所有标记。

与此同时,弥诺陶洛斯也在寻找忒修斯。他体型更大,行动更慢,但他对洞穴非常熟悉,因此,尽管看起来不太可能,但每当他从通道进入一个洞穴时,忒修斯也会进入一个洞穴,尽管通常是在不同的洞穴。弥诺陶洛斯进入洞穴时向左转,顺时针绕着洞穴走,直到找到一个(他自己)未标记的出口,这时他会标记它并进入。如果他感觉到即将进入的洞穴里有蜡烛在燃烧,他会转身逃回他刚刚使用的通道,回到之前的洞穴完成他的"转向"。

以以下迷宫为例

假设忒修斯从A和C之间开始,朝C方向前进,而弥诺陶洛斯从F和H之间开始,朝H方向前进。进入C后,忒修斯将移动到D,而弥诺陶洛斯进入H后将移动到G。然后忒修斯将朝G移动,而弥诺陶洛斯将前往D,忒修斯将在D和G之间的走廊里被杀。然而,如果忒修斯像以前一样开始,而弥诺陶洛斯从D和G之间开始,那么当忒修斯从C移动到D再到G时,弥诺陶洛斯从G移动到E再到F。当忒修斯进入G时,他发现弥诺陶洛斯之前来过这里,于是前往E,而不是H,在弥诺陶洛斯到达H的同时到达E。弥诺陶洛斯试图前往G但受阻,转身返回,在忒修斯"跟随"弥诺陶洛斯到达F的同时到达H。弥诺陶洛斯尝试E但再次受阻,在忒修斯紧追不舍到达H的同时回到H。因此,弥诺陶洛斯在H被杀死。

编写一个程序来模拟忒修斯对弥诺陶洛斯的追捕。

输入

输入将由一系列迷宫组成。每个迷宫将包含一系列洞穴描述,每行一个。每行将包含一个洞穴标识符(单个大写字符),后跟一个冒号(:)和一个从该洞穴可到达的洞穴列表(按逆时针顺序)。没有洞穴会与自身相连。洞穴描述不会以任何方式排序。迷宫的描述将以一行以@字符开头,后跟两对洞穴标识符结束。第一对表示忒修斯开始的通道,第二对表示弥诺陶洛斯开始的通道。在起始通道中的移动是朝向标识符为对中第二个字符的洞穴。忒修斯和弥诺陶洛斯永远不会从同一个走廊开始。文件将以一行仅包含#的行结束。

每个输入数据集都可能有最终的遭遇。

输出

输出将为每个迷宫包含一行。每行将指定谁被杀以及在哪里被杀。请注意,如果最终的遭遇发生在通道中,应从忒修斯的角度指定。请严格按照下面示例中所示的格式,该示例描述了上述情况。

输入数据 1

A:BCD
D:BACG
F:HE
G:HED
B:AD
E:FGH
H:FEG
C:AD
@ACFH
A:BCD
D:BACG
F:HE
G:HED
B:AD
E:FGH
H:FEG
C:AD
@ACDG
#

输出数据 1

Theseus is killed between D and G
The Minotaur is slain in H