AT_abc213_e [ABC213E] Stronger Takahashi

题目描述

有一座城市被划分为 $H$ 行 $W$ 列的格子状区块。从上往下第 $i$ 行,从左往右第 $j$ 列的区块,若 $S_{i,j}$ 为 `.`,则表示道路;若为 `#`,则表示围墙。 高桥君打算从自己家出发去鱼店买东西。高桥君的家在城市的左上角区块,鱼店在城市的右下角区块。 高桥君可以从当前所在的区块移动到上下左右相邻的道路区块。不能走出城市外部,也不能移动到围墙区块。不过,高桥君力大无穷,可以每次用一拳将任意 $2\times 2$ 的区块内的围墙全部打碎变成道路。 请你求出高桥君到达鱼店至少需要出拳多少次。

输入格式

输入以以下格式从标准输入给出。 > $H$ $W$ > $S_{1,1} \ldots S_{1,W}$ > $\vdots$ > $S_{H,1} \ldots S_{H,W}$

输出格式

请输出答案。

说明/提示

### 限制条件 - $2 \leq H, W \leq 500$ - $H, W$ 为整数 - $S_{i,j}$ 仅为 `.` 或 `#` - $S_{1,1}$ 和 $S_{H,W}$ 均为 `.` ### 样例解释 1 例如,如果破坏用 `*` 表示的 $2\times 2$ 区块内的围墙,就能到达鱼店。 ``` ..#.. #.**# ##**# #.#.# ..#.. ``` 被破坏的 $2\times 2$ 区块不要求全部为围墙。 ### 样例解释 2 虽然需要绕远路,但无需破坏任何围墙也能到达鱼店。 由 ChatGPT 4.1 翻译