【题目描述】
W 国的布局可以看作一个 n 行 m 列的网格,每一个格子里都有一座城市。
作为 W 国的敌对势力 E 国,早已做好发动空袭的准备。在 E 国的计划中,W 国的一些城市已被标记。这些城市可能是重要军事基地,也可能是经济枢纽。
而今天,E 国将发动空袭。具体地,E 国将会不断执行以下操作直到所有被标记城市均被轰炸过:
发射一枚导弹。这枚导弹会轰炸一对相邻的城市(这里的相邻定义为四连通),每一对相邻的城市被轰炸的概率是相等的。
作为 E 国的战略军事大师,你需要报告本次空袭期望会发射多少枚导弹。
【输入格式】
从文件 destroy.in 中读入数据。
第一行两个整数 n,m。
接下来 n 行,每行一个长度为 m 的字符串,字符串中仅包含 ∗ 和 . 两种字符。其中 \texttt{*} 表示该城市被标记。
【输出格式】
输出到文件 destroy.out 中。
一个整数,表示在模 998244353 意义下的答案。
【样例 #1】
输入:
1 3
***
输出:
3
【样例 1 解释】
第一次可能轰炸 {1,2} 或 {2,3}。无论是哪一个,最终还剩一座城市未被轰炸。
剩下的城市被轰炸需要发射的期望导弹数为 1+21+41+81+...=2。
所以最终期望发射导弹数量为 1+2=3 枚。
【样例 2】
见选手目录下的 destroy/ex_destroy2.in 与 destroy/ex_destroy2.out。
该样例满足 cnt≤6。
【样例 3】
见选手目录下的 destroy/ex_destroy3.in 与 destroy/ex_destroy3.out。
该样例满足 n=1。
【样例 4】
见选手目录下的 destroy/ex_destroy4.in 与 destroy/ex_destroy4.out。
该样例满足 m≤20。
【数据范围和约定】
保证对于所有的测试点满足以下限制:n≤6,2≤m≤100。
设最大的由∗ 组成的连通块大小为 s 。
设 ∗ 的个数为 cnt。
测试点编号 |
特殊性质 |
1 ∼ 3 |
cnt≤6 |
4 ∼ 6 |
cnt≤18 |
7 ∼ 9 |
s≤1 |
10 ∼ 12 |
n=1 |
13 ∼ 16 |
m≤20 |
17 ∼ 20 |
无 |