AT_abc151_d [ABC151D] Maze Master

题目描述

高桥君有一个由 $H$ 行 $W$ 列组成的 $H \times W$ 格子的迷宫。 第 $i$ 行第 $j$ 列的格子 $(i,j)$,当 $S_{ij}$ 为 `#` 时表示墙壁,为 `.` 时表示道路。 从道路格子可以移动到上下左右相邻的道路格子。 不能移动到迷宫外部、墙壁格子,也不能斜向移动。 高桥君可以自由选择一个道路格子作为起点和终点,然后把迷宫交给青木君。 青木君会以最少的移动次数从起点移动到终点。 请问,高桥君如何选择起点和终点,使得青木君的最小移动次数最大?输出这个最大值。

输入格式

输入从标准输入按以下格式给出。 > $H$ $W$ > $S_{11} \ldots S_{1W}$ > $\vdots$ > $S_{H1} \ldots S_{HW}$

输出格式

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

说明/提示

## 限制条件 - $1 \leq H, W \leq 20$ - $S_{ij}$ 只包含 `.` 或 `#` - $S$ 至少包含两个 `.`(即至少有两个道路格子) - 任意两个道路格子之间都可以通过 $0$ 次或多次移动到达 ## 样例解释 1 如果高桥君选择左上角格子为起点,右下角格子为终点,青木君的移动次数为 $4$。 ## 样例解释 2 如果高桥君选择左下角格子为起点,右上角格子为终点,青木君的移动次数为 $10$。 由 ChatGPT 4.1 翻译