A84812.午枫的双向奔赴2

普及/提高-

官方

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

有一个 nnnn 列的方格迷宫,每个格子要么是空地,要么是有障碍物的格子。方格迷宫中第 ii 行第 jj 列的格子记作 (i,j)(i, j)

小午和小枫分别站在两个不同的空地上。第 ii 行第 jj 列的格子的情况通过一个字符 si,js_{i,j} 给出,具体如下:

  • 如果 si,js_{i,j}P,则 (i,j)(i, j) 是空地,并且小午和小枫其中一人在这个格子。
  • 如果 si,js_{i,j}.,则 (i,j)(i, j) 是空地。
  • 如果 si,js_{i,j}#,则 (i,j)(i, j) 是有障碍物的格子。

这个迷宫中小午和小枫被施加了束缚魔法,此魔法的效果是:

两个人需要同时选择同一个方向(上、下、左、右),之后两人都会尝试向该方向移动一格。如果移动后的格子存在是空地,则移动过去,否则原地不动。

请你求出,为了让小午和小枫通过反复移动最终汇合到同一个格子,所需的最小移动次数。如果无论如何都无法让他们汇合,则输出 1-1

输入格式

第一行输入一个整数 nn (2n60)(2\leq n\leq 60) ,表示方格的大小。

接下来输入 nn 行,每行 nn 个字符 si,js_{i,j} (si,j{(s_{i,j}\in \{ P.# })\}) ,表示第 ii 行第 jj 列的情况。保证 P 恰好有 22 个。

输出格式

输出一个整数,表示小午和小枫汇合的最小移动次数。

输入输出样例

  • 输入#1

    5
    ....#
    #..#.
    .P...
    ..P..
    ....#

    输出#1

    3

说明/提示

假设最开始在 (3,2)(3, 2) 的为小午,在 (4,3)(4, 3) 的为小枫​。可以按如下方式用 33 次操作让两人汇合:

  • 选择左方向。小午移动到 (3,1)(3, 1),小枫移动到 (4,2)(4, 2)
  • 选择上方向。小午不动, 小枫移动到 (3,2)(3, 2)
  • 选择左方向。小午不动, 小枫移动到 (3,1)(3, 1)
首页