「SWTR-8」扫雷计数

题目背景

2020 年 6 月的某一天,小 A 在等待网络加载的过程中打开了扫雷,从此便一发不可收拾。 小 A 是一个任何事都喜欢做到极致的人,玩游戏也不例外:他不惜花费大量时间不断尝试打破记录。一个个夜晚就在熟练的 `Alt + G + N` 中过去了。 > “这把有戏,前五十个雷只用了不到四十五秒”。他心里想着,紧握鼠标的手微微颤抖。 > > “快,快,快 …… 还有最后二十个雷 ……”。 > > 游戏的关键时刻,他难以按捺激动的心情。直到他遇到了二选一。 > > 他愣了一下,随后迅速按下最后两块空地当中的一个。 > > 一束横贯屏幕的白色激光缓缓扫过,他知道自己打破了记录 …… [整整十二秒](https://cdn.luogu.com.cn/upload/image_hosting/1seixkiz.png)!巨大的惊喜让他跳了起来。 > > 2020.6.19

题目描述

以下是简化后的扫雷游戏规则: - 定义连通为 **八连通**。 - 如果打开雷,所有雷 **全部同时爆炸**,游戏结束。 - 如果打开空地,若其周围没有雷,则递归打开周围八个方块。 - [如图](https://cdn.luogu.com.cn/upload/image_hosting/kjjqs2v1.png),点开任意红色框内方块均形成当前局面。 给定一张 $n\times m$ 的初始地图。小 A 决定搜出所有可能的局面,并找到最优鼠标点击顺序,从而速通这张地图。 为设置合适的数组大小,小 A 需要知道有多少种不同局面。对 $998244353$ 取模。 - 如果方块是雷,它有爆炸和未爆炸两种状态;如果方块是空地,它有打开和未打开两种状态。 - 两个局面不同,当且仅当存在方块状态不同。 - 保证周围无雷的空地形成不超过 $37$ 个连通块。

输入输出格式

输入格式


第一行一个整数 $S$,表示该测试点的 Subtask 编号。 第二行两个整数 $n, m$。 接下来 $n$ 行,每行一个长度为 $m$ 的字符串描述地图,其中 $\texttt{.}$ 表示方块无雷,$\texttt{*}$ 表示方块有雷。

输出格式


一行一个整数表示答案。

输入输出样例

输入样例 #1

0
1 2
.*

输出样例 #1

4

输入样例 #2

0
2 3
..*
...

输出样例 #2

20

输入样例 #3

0
4 4
..*.
.*..
*...
....

输出样例 #3

2112

输入样例 #4

0
7 6
..*...
......
*...**
......
..*...
......
......

输出样例 #4

5041530

说明

**「样例解释」** 用 `.` 表示未打开的方块,`+` 表示打开的方块,`*` 表示未爆炸的雷,`!` 表示爆炸的雷。 样例 1 的所有 4 种局面为 `.* +* .! +!`。 样例 2 的所有 20 种局面为 ```plain 0 ..* ... 1 ++* .+* ..! ..* ..* ++. ... ... .+. ..+ 2 ++! ++* .+! .+* .+* ..! ..! ..* ++. +++ ... .+. ..+ .+. ..+ .++ 3 ++! .+! .+! .+* ..! +++ .+. ..+ .++ .++ 4 .+! .++ ``` 数字描述了最少点击次数。 **「数据范围与约定」** **本题采用捆绑测试。** 设周围无雷的空地形成 $d$ 个连通块。 - Subtask #1(15 points):$nm\leq 21$。 - Subtask #2(4 points):地图中只有一个雷。 - Subtask #3(5 points):$d = 0$。 - Subtask #4(6 points):$d = 1$。 - Subtask #5(7 points):$d = 2$。 - Subtask #6(8 points):$d \leq 17$。依赖 Subtask #1,#2,#3,#4,#5。 - Subtask #7(9 points):$d \leq 23$。依赖 Subtask #6。 - Subtask #8(16 points):$d\leq 27$。依赖 Subtask #7。 - Subtask #9(17 points):$d\leq 33$。依赖 Subtask #8。 - Subtask #10(13 points):无特殊限制。依赖 Subtask #9。 对于 $100\%$ 的数据: - $1\leq n, m\leq 500$。 - $0\leq d\leq 37$。 - **不保证** 地图中有雷或空地。 **「题目来源」** - [Sweet Round 8](https://www.luogu.com.cn/contest/73382) D - Idea & Solution:[Alex_Wei](https://www.luogu.com.cn/user/123294)。 - Tester:[chenxia25](https://www.luogu.com.cn/user/138400) & [asmend](https://www.luogu.com.cn/user/21658)。 感谢 [Elegia](https://www.luogu.com.cn/user/21423) 对本题做出的贡献。