QOJ.ac

QOJ

Time Limit: 5 s - 10 s Memory Limit: 1024 MB Total points: 35

#5934. 扫雷大师

Statistics

扫雷(Minesweeper)是一款在 20 世纪 80 年代流行起来的电脑游戏,至今仍包含在某些版本的 Microsoft Windows 操作系统中。本题的构思与之类似,但并不要求你玩过扫雷。

在本题中,你在一个由相同单元格组成的网格上进行游戏。每个单元格的内容最初都是隐藏的。网格中有 $M$ 个地雷隐藏在 $M$ 个不同的单元格中。其他单元格中没有地雷。你可以点击任意单元格来揭开它。如果揭开的单元格包含地雷,则游戏结束,你输了。否则,揭开的单元格会显示一个 0 到 8 之间的数字(包含 0 和 8),表示其相邻单元格中包含的地雷数量。如果两个单元格共享一个角或一条边,则它们互为邻居。此外,如果揭开的单元格显示为 0,则该单元格的所有邻居也会被自动揭开,并递归执行此过程。当所有不包含地雷的单元格都被揭开时,游戏结束,你赢了。

例如,棋盘的初始配置可能如下所示('*' 表示地雷,'c' 是第一次点击的单元格):

*..*...**.
....*.....
..c..*....
........*.
..........

点击的单元格周围没有地雷,因此当它被揭开时,它显示为 0,其 8 个相邻单元格也会被揭开。此过程持续进行,最终得到以下棋盘:

*..*...**.
1112*.....
00012*....
00001111*.
00000001..

此时,仍有未揭开且不包含地雷的单元格(用 '.' 字符表示),因此玩家必须再次点击才能继续游戏。

你希望尽可能快地赢得游戏。没有什么比一次点击就获胜更快的了。给定棋盘的大小($R \times C$)和隐藏地雷的数量 $M$,是否可能(尽管可能性很小)通过一次点击获胜?你可以选择点击的位置。如果可能,请打印出任何一种有效的地雷配置以及你点击的坐标,并遵循“输出格式”部分的规范。否则,打印 "Impossible"。

输入格式

输入的第一行包含测试用例的数量 $T$。接下来有 $T$ 行。每行包含三个空格分隔的整数:$R$、$C$ 和 $M$。

输出格式

对于每个测试用例,输出一行 "Case #x:",其中 $x$ 是测试用例编号(从 1 开始)。在接下来的 $R$ 行中,输出棋盘配置,每行包含 $C$ 个字符,使用 '.' 表示空单元格,'*' 表示包含地雷的单元格,'c' 表示点击的单元格。

如果没有可能的配置,则输出一行 "Impossible" 代替网格。如果存在多种可能的配置,输出其中任意一种即可。

数据范围

$0 \le M < R \times C$。

小数据集

$1 \le T \le 230$。 $1 \le R, C \le 5$。

大数据集

$1 \le T \le 140$。 $1 \le R, C \le 50$。

样例

输入 1

5
5 5 23
3 1 1
2 2 1
4 7 3
10 10 82

输出 1

Case #1:
Impossible
Case #2:
c
.
*
Case #3:
Impossible
Case #4:
......*
.c....*
.......
..*....
Case #5:
**********
**********
**********
****....**
***.....**
***.c...**
***....***
**********
**********
**********

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.