#3053. ASCII Labyrinth

    ID: 3053 远端评测题 1000ms 64MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>Alberta Collegiate Programming Contest 2003.10.18

ASCII Labyrinth

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

题目翻译

我们正在尝试在一个尺寸为m×nm \times n的棋盘上构建一个迷宫。初始时,棋盘的每个方格上放置了一块尺寸为1×11 \times 1的薄胶合板,上面画有以下三种图案之一。 在构建迷宫时,我们可以任意旋转这些胶合板,但每块胶合板必须恰好覆盖棋盘的一个方格,且不能将胶合板移动到棋盘的其他方格上。

给定一个初始覆盖胶合板的棋盘,我们希望通过对胶合板的旋转,使得胶合板上的图案形成至少一条连接棋盘左上角方格和右下角方格的多边形曲线。下图展示了一个尺寸为4×64 \times 6的棋盘的初始状态,以及一个成功构建的迷宫,其中实现了上述目标。 你的任务是读取初始棋盘上胶合板的描述,并判断是否可以通过旋转胶合板,使得图案形成一条连接左上角方格的某条边和右下角方格的某条边的路径。

输入格式

  • 第一行输入一个整数cc,表示测试用例的数量。
  • 每个测试用例的数据开始于两个整数mmnn,分别表示棋盘的行数和列数。
  • 接下来的若干行是棋盘的ASCII表示,其中胶合板的图案由字符+-|*和空格组成。具体格式见样例输入。输入棋盘的大小满足m×n64m \times n \leq 64

输出格式

  • 对于每个测试用例,如果可以构建满足条件的迷宫,则按照输入格式打印迷宫,其中路径上的方格保留图案,其余方格留空。如果有多个最短路径,任意一个均可。
  • 如果无法构建迷宫,则不打印棋盘。
  • 在打印棋盘(如果有)之后,输出满足条件的迷宫路径的总数,格式如下所示。

输入样例 1

1
4 6
+---+---+---+---+---+---+
|   |   |   |   |   |   |
|***|***|** |** |** |***|
|   |   | * | * | * |   |
+---+---+---+---+---+---+
|   |   |   |   |   |   |
|   |** |** |***|** |** |
|   | * | * |   | * | * |
+---+---+---+---+---+---+
|   |   |   |   |   |   |
|***|** |***|***|***|** |
|   | * |   |   |   | * |
+---+---+---+---+---+---+
|   |   |   |   |   |   |
|** |   |***|   |** |** |
| * |   |   |   | * | * |
+---+---+---+---+---+---+

输出样例 1

+---+---+---+---+---+---+
|   |   |   |   |   |   |
|***|***|** |   |   |   |
|   |   | * |   |   |   |
+---+---+---+---+---+---+
|   |   | * |   |   |   |
|   |   | **|***|** |   |
|   |   |   |   | * |   |
+---+---+---+---+---+---+
|   |   |   |   | * |   |
|   |   |   |   | * |   |
|   |   |   |   | * |   |
+---+---+---+---+---+---+
|   |   |   |   | * |   |
|   |   |   |   | **|** |
|   |   |   |   |   | * |
+---+---+---+---+---+---+
Number of solutions: 2