AT_abc436_d [ABC436D] Teleport Maze
题目描述
有一个由 $H$ 行 $W$ 列组成的迷宫。我们用 $(i,j)$ 表示从上往下第 $i$ 行、从左往右第 $j$ 列的格子。每个格子的类型由一个字符 $S_{i,j}$ 给定,具体含义如下:
- `.`:空格子
- `#`:障碍格子
- 小写英文字母(`a` - `z`):传送格子
你可以不限次数、顺序进行以下两种操作:
- 行走:从当前位置移动到相邻的上下左右四个方向的其中一个格子,但不能走到障碍格或出界。
- 传送:当你在一个传送格上时,可以立刻移动到任何一个字符相同的传送格上。
请你判断是否可以从 $(1,1)$ 出发,移动到 $(H,W)$。如果可以,请输出所需的最少操作次数;否则输出 $-1$。
输入格式
输入从标准输入读入,格式如下:
> $H$ $W$
> $S_{1,1}S_{1,2}\dots S_{1,W}$
> $\vdots$
> $S_{H,1}S_{H,2}\dots S_{H,W}$
输出格式
如果可以从 $(1,1)$ 到达 $(H,W)$,输出所需的最少操作次数;否则输出 $-1$。
说明/提示
### 样例解释 1
如样例,你可以按如下顺序操作从 $(1,1)$ 到 $(3,4)$:
1. 从 $(1,1)$ 走到 $(1,2)$。
2. 从 $(1,2)$ 走到 $(1,3)$。
3. 从 $(1,3)$ 通过传送到 $(3,2)$。
4. 从 $(3,2)$ 走到 $(3,1)$。
5. 从 $(3,1)$ 通过传送到 $(3,4)$。
共需要 $5$ 次操作,为最少次数。
### 样例解释 2
无法从 $(1,1)$ 到达 $(3,4)$。
### 数据范围
- $1\leq H,W \leq 1000$
- $H\times W \geq 2$
- $H$、$W$ 均为整数
- $S_{i,j}$ 只可能为 `.`、`#` 或小写英文字母
- $S_{1,1} \neq \texttt{\#}$
- $S_{H,W} \neq \texttt{\#}$
由 ChatGPT 5 翻译