#MC1015. 建造空置域
建造空置域
题目背景
在 Minecraft Java 版中,空置域(Perimeter) 是指玩家为了刷怪效率而清理出的大片区域。
为了建造空置域,史蒂夫需要清除区域内的所有方块,包括空气方块和实体方块。现在,你需要帮助史蒂夫计算肝空置域所需的时间。
史蒂夫有一个耐久为 的盾牌,所以不会被 TNT 炸死。
(还有,史蒂夫作为肝帝当然是纯手挖啦)

题目描述
史蒂夫需要清理一个大小为 的区域。
区域中的每个方块可能是以下几种类型:
-
空气方块(Air):用字符
.表示,不需要清理。 -
实体方块(Block):用字符
#表示,需要清理。 -
TNT 方块:用字符
T表示,清理时会引爆,同时清除其周围 个方向的方块(如果存在方块)。
清理规则:
-
清理一个实体方块需要 单位时间。
-
清理一个 TNT 方块需要 单位时间(包括举盾防御的时间),同时会引爆并清除其周围 个方向的方块(如果存在方块)。
-
被 TNT 引爆的方块不需要额外时间清理。
请你计算清理整个 区域所需的最短时间。
输入格式
第一行包含两个整数 和 ,表示区域的大小。 接下来 行,每行包含 个字符,表示区域的布局。
输出格式
输出一个整数,表示清理整个区域所需的最短时间。
输入输出样例
3 3
.#.
T#.
.#.
2
4 4
.#.#
T#T#
.#.#
T#T#
8
说明 / 提示
样例 1 解释
清理 TNT 方块需要 单位时间,同时引爆并清除其周围的实体方块(共 个)。
剩余的空气方块不需要清理。
总时间为 单位。
数据范围与约定
设方块对应字符为 。
对于 的数据,。