Windows 扫雷(WinMine)是 Windows 系统中最广为人知的游戏之一。它的规则非常简单,玩一局只需要几分钟。首先,让我们简要介绍一下这个游戏(如果你认为你已经足够熟悉这个游戏,可以跳过下一段):
游戏的目标是在不被地雷“炸毁”的情况下(通过鼠标左键)揭开所有不包含地雷的方块。地雷的位置通过逻辑推理发现。点击游戏面板会揭示所选方块下方隐藏的内容(如果大量空白方块彼此相邻,它们可能会一次性被揭开)。有些方块是空白的,有些则包含数字(1 到 8),每个数字代表该方块周围相邻的地雷数量。一旦所有空白方块在没有触雷的情况下被揭开,游戏即告胜利,任何未被标记的地雷将由计算机自动标记。扫雷的一个显著特点是其在初始阶段和某些中间阶段的随机性。
——维基百科
Jaddy 非常喜欢在空闲时间玩扫雷,因为它简单且巧妙。然而,有时当他在游戏中遇到一些无法确定的状态时,会感到非常沮丧。请看以下状态作为示例:
在这个示例的红圈中,剩下的两个方块是绝对无法确定的,显然剩下的那 1 个地雷有两种可能的分布方式。
当 Jaddy 遇到这种困境时,他别无选择,只能猜测。有时只有两种选择(如示例所示),但有时会有很多种。因此,他需要一个游戏助手,根据当前游戏面板的状态来计算地雷的不同可能分布数量。
这个游戏助手对他来说非常有用且有趣,所以他立即开始编写代码。不幸的是,Jaddy 把所有时间都花在了“编程与算法”课上玩扫雷,所以他觉得这样一个复杂的任务是不可能完成的。Jaddy 非常喜欢扫雷,所以他请求你这位优秀的程序员帮忙。此外,为了降低难度,他增加了三个约束:
- 保证游戏的输入状态总是可以通过在初始面板上进行“一次”点击创建。
- 在给定的状态下,如果两个未揭开的方块直接相连或通过其他未揭开的方块相连,它们也是双连通的。也就是说,即使移除了其他任何一个未揭开的方块,这两个方块仍然是连通的。这里我们说两个方块是连通的,当且仅当它们共享一条边。这意味着一个方块最多有四个相邻的方块。
- 对于任意两个未揭开的方块 A 和 B,如果 A 和 B 都与同一个连通分量 S 相邻(其中 S 是一个仅由正数方块组成的连通区域),那么 A 和 B 总是可以通过未揭开的方块连通。
请帮帮 Jaddy!
输入格式
输入包含多组测试数据。第一行是一个正整数 $T$ ($T \le 50$),表示测试数据的组数。接下来是 $T$ 组数据。对于每组测试数据,第一行包含三个正整数 $n, m$ 和 $w$ ($1 \le n, m \le 100$,$1 \le w \le 1500$),分别表示给定面板的行数、列数以及面板上的地雷总数。接下来是一个 $n \times m$ 的字符矩阵,描述面板的当前状态。矩阵中包含两种符号:
- 数字 0 到 8:表示该方块周围的地雷数量('0' 表示空白方块)。
- '.':表示该方块尚未揭开。
输出格式
对于每组测试数据,输出一行,格式为 Case #x: y,其中 x 是测试数据的编号,y 是给定状态下地雷的可能分布数量,结果对 $1000003$ 取模。
样例
输入格式 1
2 4 5 2 ..... ..... 11111 00000 4 5 4 ..... ..... 22222 00000
输出格式 1
Case #1: 2 Case #2: 1