[BalticOI 2014 Day2] Portals
题目描述
给定一个 $R\times C$ 的迷宫,每个格子都有一种方块:
- `#` 墙,不可以走,不可以穿过
- `.` 路,可以走
- `S` 出生点,玩家从这里开始走,只有一个
- `C` 终点,玩家要到达这里,只有一个
现在要对迷宫进行扩容,周围要增加一个方块 `#`,变成 $(R+2)\times (C+2)$ 的迷宫。
并且在任何时候,它都可以向上、左、下、右四个方向中的一个发射传送门。当一个传送门被发射,它会一直向发射的方向飞行,直到碰触到墙壁。这时,传送门会被放置在这堵墙上。
走一格需要 $1$ 的时间,穿梭传送门也需要 $1$ 的时间。
求从出生点到终点最少需要多少时间。
如果很难理解题意,请配合样例进行理解。
输入输出格式
输入格式
第一行两个整数 $R,C$ 代表迷宫大小。
接下来 $R$ 行每行 $C$ 个字符代表迷宫。
输出格式
一行一个整数代表到达终点的最小时间。
输入输出样例
输入样例 #1
4 4
.#.C
.#.#
....
S...
输出样例 #1
4
说明
#### 样例说明
对于样例 $1$,我们把迷宫模拟出来并且在周围加上 `#` 之后,如下图所示:
![](https://cdn.luogu.com.cn/upload/image_hosting/5d381oik.png)
人形物体为 `S`,蛋糕形物体为 `C`。
如图所示,至少需要 $4$ 的时间。
#### 数据规模与约定
**本题采用捆绑测试。**
- Subtask 1(11 pts):$R,C \le 10$。
- Subtask 2(20 pts):$R,C \le 50$。
- Subtask 3(20 pts):$R,C \le 200$,每个 `.` 周围都至少有一个 `#`。
- Subtask 4(19 pts):$R,C \le 200$。
- Subtask 5(30 pts):无特殊限制。
对于 $100\%$ 的数据,$1 \le R,C \le 1000$。
**本题强制 $O2$ 优化。**
#### 说明
翻译自 [BalticOI 2014 Day2 B Portals](https://boi.cses.fi/files/boi2014_day2.pdf)。