AT_abc420_d.[ABC420D] Toggle Maze

普及-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有一个 HH 行 WW 列的网格。用 (i,j)(i,j) 表示从上到下第 ii 行、从左到右第 jj 列的格子。每个格子的状态由字符 Ai,jA_{i,j} 表示,含义如下:

  • . :空格子。
  • # :障碍格子。
  • S :起始格子。
  • G :目标格子。
  • o :开启的门格子。
  • x :关闭的门格子。
  • ? :开关格子。

高桥可以每次从当前位置移动到相邻的格子(上下左右),前提是该格子不是障碍格子也不是关闭的门格子,每次移动算一次操作。

此外,每当他移动到一个开关格子时,所有开启的门格子会变为关闭的门格子,所有关闭的门格子会变为开启的门格子。

请判断他是否可以从起始格子出发到达目标格子。如果可以,输出所需的最小操作次数;否则输出 −1-1。

输入格式

输入按以下格式从标准输入给出:

HH WW
A1,1A1,2⋯A1,WA_{1,1}A_{1,2}\cdots A_{1,W}
A2,1A2,2⋯A2,WA_{2,1}A_{2,2}\cdots A_{2,W}
⋮\vdots
AH,1AH,2⋯AH,WA_{H,1}A_{H,2}\cdots A_{H,W}

输出格式

如果高桥可以从起始格子到达目标格子,输出最小操作次数;否则输出 −1-1。

输入输出样例

  • 输入#1

    2 4
    S.xG
    #?o.

    输出#1

    5
  • 输入#2

    1 5
    So?oG

    输出#2

    -1
  • 输入#3

    5 5
    Sx?x?
    o#o#x
    ?o?o?
    x#x#o
    ?x?oG

    输出#3

    10

说明/提示

样例解释 1

按照 (1,1)→(1,2)→(2,2)→(1,2)→(1,3)→(1,4)(1,1) \to (1,2) \to (2,2) \to (1,2) \to (1,3) \to (1,4) 的顺序移动,他可以在五次操作内到达目标格子。

样例解释 2

无论如何操作,都无法到达目标格子。因此输出 −1-1。

数据范围

  • 1≤H,W≤5001\le H,W \le 500
  • HH 和 WW 为整数。
  • 每个 Ai,jA_{i,j} 取值为 .、#、S、G、o、x、? 之一。
  • Ai,jA_{i,j} 中 S 和 G 各出现恰好一次。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页