QOJ.ac

QOJ

حد الوقت: 1 s حد الذاكرة: 256 MB مجموع النقاط: 100

#15281. 传送门

الإحصائيات

迷宫里放着一块蛋糕,你非常想吃掉它。你有一张迷宫的地图,它是一个 $R$ 行 $C$ 列的网格。每个网格单元格包含以下字符之一:

  • #(井号)表示墙壁。
  • .(点)表示空地。
  • S(大写字母 S)表示你当前所在位置的空地。
  • C(大写字母 C)表示放有蛋糕的空地。

你只能在空地上行走,并且只有当两个空地共享一条边时,才能从一个空地移动到另一个空地。此外,地图上描绘的矩形区域完全被墙壁包围。

为了更快地到达蛋糕所在的位置,你从 Aperture Science™ 获得了一把传送枪,其工作原理如下。在任何时候,它都可以向四个方向(上、左、下、右)之一发射传送门。当向某个方向发射传送门时,它会沿着该方向飞行,直到遇到第一面墙。当发生这种情况时,传送门将在墙壁朝向你的那一侧生成。

在任何给定时间,最多只能存在两个传送门。如果迷宫中已经放置了两个传送门,那么在再次使用传送枪时,其中一个(由你选择)将立即消失。向已有的传送门发射传送门会将其替换(墙壁的每一侧最多只能有一个传送门)。请注意,同一面墙的不同侧面可以放置两个传送门。

一旦在迷宫中放置了两个传送门,你就可以利用它们进行传送。当你站在其中一个传送门旁边时,你可以走进它,并出现在另一个传送门旁边的空地上。这样做所花费的时间与在两个相邻格子之间移动的时间相同。

你可以认为发射传送门不消耗时间,在两个相邻格子之间移动或通过传送门传送需要 $1$ 个单位的时间。

任务

给定迷宫的地图、你的起点位置以及蛋糕的位置,计算你到达蛋糕所需的最小可能时间。

输入格式

输入的第一行包含两个整数:地图的行数 $R$ 和列数 $C$。

接下来的 $R$ 行描述地图。这些行中的每一行都包含 $C$ 个字符:#.SC(其含义如上所述)。

保证字符 SC 在地图中各恰好出现一次。

输出格式

输出应包含一个整数——从起点到达蛋糕所需的最小时间。

你可以假设从起点可以到达蛋糕。

样例

输入样例 1

4 4
.#.C
.#.#
....
S...

输出样例 1

4

说明 1

一种最快的移动序列如下:

  1. 向右移动。
  2. 向右移动,向上发射一个传送门,向下发射一个传送门。
  3. 穿过下方的传送门。
  4. 向右移动一格并到达蛋糕。

子任务

  • 子任务 1(11 分):$1 \le R \le 10$,$1 \le C \le 10$。
  • 子任务 2(20 分):$1 \le R \le 50$,$1 \le C \le 50$。
  • 子任务 3(20 分):$1 \le R \le 200$,$1 \le C \le 200$。每个空地都至少与一个墙壁相邻。
  • 子任务 4(19 分):$1 \le R \le 200$,$1 \le C \le 200$。
  • 子任务 5(30 分):$1 \le R \le 1000$,$1 \le C \le 1000$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.