#10950. D - Grid and Magnet 网格和磁铁 比赛编号351代码没有问题但是一直错误

D - Grid and Magnet 网格和磁铁 比赛编号351代码没有问题但是一直错误

时间限制:2秒 / 内存限制:1024MB

得分:425分


问题描述

有一个HW列的网格。某些单元格(可能为零个)包含磁铁。网格的状态由H个字符串表示,字符串为​S₁​, ​S₂​, ..., ​Sₖ​,每个字符串的长度为​W​。如果字符串Sᵢ的第j个字符是 #,表示该单元格含有磁铁;如果是 .,表示该单元格为空。

穿着铁甲的Takahashi可以在网格中移动,移动规则如下:

  • 如果当前单元格上下左右相邻的任何一个单元格含有磁铁,他就无法移动。
  • 否则,他可以移动到上下左右相邻的任一单元格,但不能越过网格的边界。

对于每个不含磁铁的单元格,定义它的自由度为他可以通过反复移动从该单元格到达的单元格的数量。求出所有不含磁铁的单元格中,最大自由度是多少。

在自由度的定义中,“他可以反复移动到达的单元格”是指通过某些移动(可能是零次)从该单元格可以到达的所有单元格。特别地,每个单元格本身(没有磁铁)始终包含在其可达单元格中。


约束条件

  • 1 ≤ H, W ≤ 1000
  • H 和 W 是整数。
  • Sᵢ 是一个长度为 W 的字符串,由字符 .# 组成。
  • 至少有一个单元格没有磁铁。

输入格式

输入由标准输入提供,格式如下:

H W
S₁
S₂
...
Sₖ

其中:

  • H 为网格的行数。
  • W 为网格的列数。
  • Sᵢ 为网格的第 i 行(长度为 W),由 .# 组成,表示该行的磁铁分布。

输出格式

输出一个整数,表示所有不含磁铁的单元格中,最大自由度。


样例输入 1

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

样例输出 1

9

解释​: 假设**(i,j)** 表示从上方第 i 行、左侧第 j 列的单元格。如果Takahashi从**(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)​至少到达9个单元格。 实际上没有其他单元格能被到达,所以​(2,3)**的自由度是9。

这是所有没有磁铁的单元格中,最大自由度,所以输出9。


样例输入 2

3 3
..#
#..
..#

样例输出 2

1

解释​: 对于任意没有磁铁的单元格,至少有一个相邻单元格含有磁铁。 因此,Takahashi无法从这些单元格移动,所以它们的自由度都是1。

因此,输出1。