4568 - 网格和磁铁

通过次数

1

提交次数

1

时间限制 : 1 秒
内存限制 : 128 MB

有一个n行m列的网格。一些单元格(可能是零个)包含磁铁。

如果网格是#,表示是磁铁,如果网格是. ,表示是空地,可以站人

高桥穿着铁甲,可以在网格中按照以下方式移动:

如果当前单元格垂直或水平相邻的任何单元格包含磁铁,他根本无法移动。

否则,他可以移动到任何一个垂直或水平相邻的单元格。 但是,他不能离开网格。

对于每个没有磁铁的单元格,定义其自由度为他可以从该单元格重复移动到达的单元格数量。找到网格中所有没有磁铁的单元格中自由度的最大值。

在这里,在自由度的定义中,“他可以通过重复移动到达的单元格"意味着可以通过一些移动序列(可能是零次移动)从初始单元格到达的单元格。没有必要从初始单元格开始访问所有这样的可达单元格的移动序列。具体来说,每个单元格本身(没有磁铁)总是包含在从该单元格可达的单元格中。

输入

第一行两个数字,n、m

接下来n行,每行m个字符,代表二维网格

输出

自由度最大值

样例

输入

3 5
.#...
.....
.#..#

输出

9

输入

3 3
..#
#..
..#

输出

1

提示

1 \leq n ,m \leq 1000

对于样例一,设(i,j)表示从顶部数第i行和从左侧数第j列的单元格。如果高桥从(2,3)开始,可能的移动包括: (2,3)(2,4)-(1,4)(1,5)-(2,5)

(2,3)-(2,4)(3,4)

(2,3)-(2,2)

(2,3)(1,3)

(2,3)(3,3)

因此,包括他经过的单元格,他至少可以从(2,3)到达九个单元格。实际上,没有其他单元格可以到达,所以(2,3)的自由度是9。这是所有没有磁铁的单元格中自由度的最大值,所以打印9。

对于样例二,对于任何没有磁铁的单元格,至少有一个相邻的单元格中有磁铁。

因此,他不能从这些单元格中的任何一个移动,所以它们的自由度是1。

因此,打印1。

来源

信友队