Poor Penguin
题意翻译
## 题目描述
在北冰洋, 海上漂浮着 $H$ 行 $W$ 列的冰块. 我们将该区域视为网格, 并将第 $i$ 行和第 $j$ 列的方格表示为 $Square(i,j)$. 漂浮在每个方格中的冰块**不是薄冰就是厚冰**. **正方形网格外没有冰块**.
$Square(i,j)$ 处的冰块可以用以下三种字符表示:
+ `+` 此方格是薄冰.
+ `#` 此方格是厚冰.
+ `P` 此方格是**企鹅**所在地, 为**薄冰**.
(译者:北冰洋-企鹅?????)
夏天一到, 因温度上升和薄冰的不稳定性, 薄冰将会一个接一个的融化消失. 我们定义, $Square(i,j)$ 处的**薄冰**在**不满足以下任意一种情况时**就会融化:
+ $Square(i-1,j)$ 和 $Square(i+1,j)$ 都有冰块.
+ $Square(i,j-1)$ 和 $Square(i,j+1)$ 都有冰块.
现在, 一个不怀好意的人来到了这里. 他可以用锤子砸厚冰, 使其变为薄冰. 请问, 他至少要砸多少块厚冰, 才能使企鹅所在处的冰块融化消失?
## 输入格式
第一行两个正整数 $H$ 和 $W$, 含义如题意所示.
接下来一个 $H$ 行 $W$ 列的字符矩阵表示方格图, 有且只有题意所给的三个字符.
## 输出格式
一行一个数表示最少块数.
## 说明
对于 100% 的数据, $1 \le H,W \le 40$.
题目描述
[problemUrl]: https://atcoder.jp/contests/cf17-final/tasks/cf17_final_h
北極海のとある場所に $ H $ 行 $ W $ 列のマス目状に氷が浮かんでいます。 $ i $ 行目 $ j $ 列目のマスをマス $ (i,j) $ と表すことにします。 浮かんでいる氷は薄氷または氷山であり、薄氷のマスのうちちょうど $ 1 $ マスにはペンギンが住んでいます。 また、$ H $ 行 $ W $ 列のマス目の外には氷は浮かんでいません。
マス $ (i,j) $ に浮かんでいる氷は文字 $ S_{i,j} $ で表されます。 $ S_{i,j} $ は `+`、`#`、`P` のいずれかであり、それぞれ以下のようなことを表しています。
- `+`:薄氷が浮かんでいる。
- `#`:氷山が浮かんでいる。
- `P`:薄氷が浮かんでおり、ペンギンが住んでいる。
夏になると、氷に挟まれていない不安定な薄氷は次々に崩落していってしまいます。 つまり、マス $ (i,j) $ の薄氷が以下の条件をいずれも満たしていないとき、その薄氷は崩落してしまいます。
- マス $ (i-1,j) $ とマス $ (i+1,j) $ の両方に氷山または崩落していない薄氷が存在する。
- マス $ (i,j-1) $ とマス $ (i,j+1) $ の両方に氷山または崩落していない薄氷が存在する。
崩落は連鎖的に発生することもあります。 また、氷山は崩落しません。
さて、ここに悪い旅人がやってきてペンギンの住んでいる薄氷が夏になると崩落するように細工をしようと考えました。 旅人はハンマーで氷山を叩いて薄氷に変えることができます。 旅人は最小でいくつの氷山を薄氷に変えれば良いでしょうか?
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ H $ $ W $ $ S_{1,1} $$ S_{1,2} $$ ... $$ S_{1,W} $ $ S_{2,1} $$ S_{2,2} $$ ... $$ S_{2,W} $ $ : $ $ S_{H,1} $$ S_{H,2} $$ ... $$ S_{H,W} $
输出格式
ペンギンの住んでいる薄氷が夏になると崩落するようにするために薄氷に変える必要のある氷山の個数の最小値を出力せよ。
输入输出样例
输入样例 #1
3 3
+#+
#P#
+#+
输出样例 #1
2
输入样例 #2
6 6
#+++++
+++#++
#+++++
+++P+#
+##+++
++++#+
输出样例 #2
1
输入样例 #3
40 40
#++#+++++#+#+#+##+++++++##+#+++#++##++##
+##++++++++++#+###+##++++#+++++++++#++##
+++#+++++#++#++####+++#+#+###+++##+++#++
+++#+######++##+#+##+#+++#+++++++++#++#+
+++##+#+#++#+++#++++##+++++++++#++#+#+#+
#++#+++#+#++++##+#+#+++##+#+##+#++++##++
++#+##+++#++####+#++##++#+++#+#+#++++#++
+#+###++++++##++++++#++##+#####++#++##++
##+##+#+++#+#+##++#+###+######++++#+###+
+++#+++##+#####+#+#++++#+#+++++#+##++##+
#+++#+##+++++++#++#++++++++++###+#++#+#+
##+++##++#+++++#++++#++#+##++#+#+#++##+#
##+++#+###+++++##++#+#+++####+#+++++#+++
+++#++#++#+++++++++#++###++++++++###+##+
++#+++#++++++#####++##++#+++#+++++#++++#
++#++#+##++++#####+###+++####+#+#+######
++++++##+++++##+++++#++###++#++##+++++++
+#++++##++++++#++++#+#++++#++++##+++##+#
+++++++#+#++##+##+#+++++++###+###++##+++
++++++#++###+#+#+++##+#++++++#++#+#++#+#
##+##++++++#+++++#++#+#++##+++#+#+++##+#
#+++#+#+##+#+##++#P#++#++++++##++#+#++##
#+++#++##+##+#++++#++#++##++++++#+#+#+++
++++####+#++#####+++#+###+#++###++++#++#
#+#++####++##++#+#+#+##+#+#+##++++##++#+
+###+###+#+##+++#++++++#+#++++###+#+++++
+++#+++++#+++#+++++##++++++++###++#+#+++
+#+#++#+#++++++###+#++##+#+##+##+#+#####
#++++++++#+#+###+######++#++#+++++++++++
##+++##+#+#++#++#++#++++++#++##+#+#++###
+#+#+#+++++++#+++++++######+##++#++##+##
++#+++#+###+#++###+++#+++#+#++++#+###+++
#+#+###++#+#####+++++#+####++#++#+###+++
+#+##+#++#++##+++++++######++#++++++++++
+####+#+#+++++##+#+#++#+#++#+++##++++#+#
#++##++#+#+++++##+#++++####+++++###+#+#+
##+#++#++#+##+#+#++##++###+###+#+++++##+
##++###+###+#+#++#++#########+++###+#+##
+++#+++#++++++++++#+#+++#++#++###+####+#
++##+###+++++++##+++++#++#++++++++++++++
输出样例 #3
151
输入样例 #4
1 1
P
输出样例 #4
0
说明
### 制約
- $ 1\ \leq\ H,W\ \leq\ 40 $
- $ S_{i,j} $ は `+`、`#`、`P` のいずれかである。
- $ S $ はちょうど $ 1 $ つだけ `P` を含む。
### Sample Explanation 1
例えば右と下の氷山を薄氷に変えると以下のように薄氷が崩落していきます。 ``` +#+ .#. .#. .#. #P+ -> #P+ -> #P. -> #.. +++ .+. ... ... ```