#P1858. Interesting Maze Game

Interesting Maze Game

本题没有可用的提交语言。

题目描述

警察局长最近购买了一款新游戏——著名的Ravensburger公司的"aMAZEing Labyrinth"。他现在非常热衷于这个游戏,任何空闲时间都在玩。然而在峰会期间,我们希望警察局长能做出更重要的决策,因此需要一个程序来替代他玩这个游戏。

游戏在一个7×77 \times 7的方格上进行,每个方格上放有一张卡片,卡片上绘制了不同的路径图案。这些路径可以连接方格的任意四条边,形成贯穿整个游戏场地的长路径。玩家可以沿着路径从一个方格移动到相邻的方格,前提是两个方格的路径图案在公共边上是连通的。不允许对角线移动

在每一步操作开始时,玩家的游戏棋子位于某个方格上,目标是通过合法路径移动到另一个目标方格。在移动前,玩家可以通过插入一张额外的卡片来改变迷宫状态。

插入规则
11. 额外卡片只能插入到游戏场地的边缘位置(即偶数行或偶数列)。
22. 插入会导致整行或整列的卡片向反方向移动一格,最边缘的卡片会被移出游戏场地(成为下一回合的额外卡片)。
33. 只有偶数行和偶数列可以移动(即插入位置只能是$(1,2), (1,4), (1,6), (7,2), (7,4), (7,6), (2,1), (4,1), (6,1), (2,7), (4,7), (6,7)$)。
44. 插入前,额外卡片可以旋转至任意四个方向

棋子与目标的移动
如果目标或棋子所在的卡片被移动,它们的位置也会相应调整。
如果目标卡片被移出游戏场地,则当前回合无法到达目标。
如果棋子所在的卡片被移出,棋子会重新出现在插入的卡片上

任务:判断是否存在一种插入方式(包括旋转额外卡片),使得棋子能通过路径移动到目标位置。

输入格式

每个测试用例的第一行包含四个整数R1,C1,R2,C2R1, C1, R2, C21R1,C1,R2,C271 \leq R1, C1, R2, C2 \leq 7),分别表示棋子的初始位置(R1,C1)(R1, C1)和目标位置(R2,C2)(R2, C2)
接下来是77行游戏场地的描述,每行由33个子行组成(每张卡片用3×33 \times 3的字符矩阵表示)。
O表示路径中心。
-表示水平路径,|表示垂直路径。
.表示无路径。
最后33行描述额外卡片。
输入以0 0 0 0结束。

输出格式

如果存在一种插入方式使得棋子能到达目标,输出"You can win in one move."
否则输出"Bad luck!"

样例输入 1

1 1 7 7

... ... ... .|. ... ... ...
-O- -O- -O- .O. -O- -O- -O.
... ... ... .|. ... ... .|.

... ... ... ... ... ... .|.
.O- -O- -O- -O- -O- -O- -O.
.|. ... ... ... ... ... ...

.|. ... ... ... ... ... ...
.O- -O- -O- -O- -O- -O- -O.
... ... ... ... ... ... .|.

... ... ... ... ... ... .|.
.O- -O- -O- -O- -O- -O- -O.
.|. ... ... ... ... ... ...

.|. ... ... ... ... ... ...
.O- -O- -O- -O- -O- -O- -O.
... ... ... ... ... ... .|.

... ... ... ... ... ... .|.
.O- -O- -O- -O- -O- -O- -O.
.|. ... ... ... ... ... ...

.|. ... ... ... ... ... ...
.O- -O- -O- -O- -O- -O- -O.
... ... ... ... ... ... ...

.|.
.O.
.|.

样例输出 1

You can win in one move.

关键思路

11. 模拟所有可能的插入操作1212种位置 × 44种旋转方向)。
22. 调整棋子和目标的位置(如果它们所在的卡片被移动)。
33. BFS/DFS检查路径连通性,判断棋子是否能到达目标。

来源

CTU Open 2002