4568 - 网格和磁铁
时间限制 : 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。
来源
信友队