AT_abc351_d.[ABC351D] Grid and Magnet

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有一个 HH 行 WW 列的格子,其中有若干个(也可能为 00 个)格子上放置了磁铁。
格子的状态由 HH 个长度为 WW 的字符串 S1,S2,…,SHS_1,S_2,\ldots,S_H 表示,SiS_i 的第 jj 个字符为 # 时,表示从上往下第 ii 行、从左往右第 jj 列的格子上放置了磁铁,为 . 时表示该格子上没有放置任何东西。

高桥君穿着铁制盔甲,在某个格子时可以按如下方式移动:

  • 如果当前格子的上下左右相邻的任意一个格子上放置了磁铁,则无法移动到任何地方。
  • 否则,可以选择上下左右相邻的任意一个格子并移动到该格子。
    但不能移动到格子外面。

对于没有放置磁铁的每个格子,定义该格子的自由度为“最初高桥君在该格子时,从该格子出发通过多次移动能够到达的格子的数量”。
请你求出所有没有放置磁铁的格子中,自由度的最大值。

需要注意的是,在自由度的定义中,“能够通过多次移动到达的格子”指的是,从最初所在的格子出发,通过若干次(也可以为 00 次)移动能够到达的格子,不要求存在一种移动方式能够遍历所有这些格子。特别地,每个没有放置磁铁的格子本身总是包含在“能够到达的格子”之中。

输入格式

输入按以下格式从标准输入读入。

HH WW
S1S_1
S2S_2
⋮\vdots
SHS_H

输出格式

请输出所有没有放置磁铁的格子中,自由度的最大值。

输入输出样例

  • 输入#1

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

    输出#1

    9
  • 输入#2

    3 3
    ..#
    #..
    ..#

    输出#2

    1

说明/提示

限制条件

  • 1≤H,W≤10001 \leq H, W \leq 1000
  • H,WH, W 为整数
  • SiS_i 是仅由 . 和 # 组成的长度为 WW 的字符串
  • 至少存在一个没有放置磁铁的格子

样例解释 1

用 (i,j)(i, j) 表示从上往下第 ii 行、从左往右第 jj 列的格子。
当高桥君最初在 (2,3)(2,3) 时,移动的例子有如下几种:

  • (2,3)→(2,4)→(1,4)→(1,5)→(2,5)(2,3) \to (2,4) \to (1,4) \to (1,5) \to (2,5)
  • (2,3)→(2,4)→(3,4)(2,3) \to (2,4) \to (3,4)
  • (2,3)→(2,2)(2,3) \to (2,2)
  • (2,3)→(1,3)(2,3) \to (1,3)
  • (2,3)→(3,3)(2,3) \to (3,3)

因此,包括途中经过的格子在内,高桥君从 (2,3)(2,3) 至少可以到达 99 个格子。
另一方面,无法到达其他格子,因此 (2,3)(2,3) 的自由度为 99。
这是所有没有放置磁铁的格子中自由度的最大值,因此输出 99。

样例解释 2

对于没有放置磁铁的任意格子,其上下左右相邻的格子中至少有一个放置了磁铁。
因此,从没有放置磁铁的任意格子都无法移动,自由度为 11。
所以输出 11。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页