AT_arc074_d [ARC074F] Lotus Leaves
题目描述
有一个长方形的池塘。池塘被分割为高 $H$ 行、宽 $W$ 列的网格。从上往下第 $i$ 行,从左往右第 $j$ 列的格子可以表示为 $(i,\, j)$。
池塘中的某些格子上漂浮着莲叶。某只青蛙正站在编号为 $S$ 的叶子上,准备移动到另一个编号为 $T$ 的叶子。每个格子 $(i,\, j)$ 的信息由字符 $a_{ij}$ 表示:
- `.` :该格子上没有莲叶。
- `o` :该格子上有一片莲叶。
- `S` :该格子上有编号为 $S$ 的莲叶。
- `T` :该格子上有编号为 $T$ 的莲叶。
青蛙可以不断进行如下操作:“跳到当前所在叶子同一行或同一列上漂浮的另一个叶子上”。青蛙希望移动到叶 $T$。
すぬけ君的目标是,提前移除若干(可以为零)片叶子(不能移除 $S$ 和 $T$),使得青蛙无法从 $S$ 移动到 $T$。请判断能否实现该目标。如果可以,请输出最少需要移除的叶子数量。如果不能实现,请输出 $-1$。
输入格式
输入为如下格式,从标准输入读入。
> $H$ $W$
> $a_{11} a_{12} ... a_{1W}$
> $\vdots$
> $a_{H1} a_{H2} ... a_{HW}$
输出格式
如果目标可以实现,输出最少需要移除的叶子的数量。否则,请输出 $-1$。
说明/提示
### 限制
- $2 \leq H, W \leq 100$
- $a_{ij}$ 只会是 `.`, `o`, `S`, `T` 之一。
- 所有 $a_{ij}$ 中恰好有一个 `S`。
- 所有 $a_{ij}$ 中恰好有一个 `T`。
### 样例解释 1
只需移除右上和左下的两片叶子即可。
由 ChatGPT 5 翻译