#aBC151Did580. [ABC151D] Maze Master

[ABC151D] Maze Master

AT_abc151_d [ABC151D] Maze Master

题目描述

高桥君有一个由 HHWW 列组成的 H×WH \times W 格子的迷宫。

ii 行第 jj 列的格子 (i,j)(i,j),当 SijS_{ij}# 时表示墙壁,为 . 时表示道路。

从道路格子可以移动到上下左右相邻的道路格子。

不能移动到迷宫外部、墙壁格子,也不能斜向移动。

高桥君可以自由选择一个道路格子作为起点和终点,然后把迷宫交给青木君。

青木君会以最少的移动次数从起点移动到终点。

请问,高桥君如何选择起点和终点,使得青木君的最小移动次数最大?输出这个最大值。

输入格式

输入从标准输入按以下格式给出。

HH WW
S11S1WS_{11} \ldots S_{1W}
\vdots
SH1SHWS_{H1} \ldots S_{HW}

输出格式

输出青木君的最小移动次数的最大值。

输入输出样例 #1

输入 #1

3 3
...
...
...

输出 #1

4

输入输出样例 #2

输入 #2

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

输出 #2

10

说明/提示

限制条件

  • 1H,W201 \leq H, W \leq 20
  • SijS_{ij} 只包含 .#
  • SS 至少包含两个 .(即至少有两个道路格子)
  • 任意两个道路格子之间都可以通过 00 次或多次移动到达

样例解释 1

如果高桥君选择左上角格子为起点,右下角格子为终点,青木君的移动次数为 44

样例解释 2

如果高桥君选择左下角格子为起点,右上角格子为终点,青木君的移动次数为 1010

由 ChatGPT 4.1 翻译