#ABC339D. 同步玩家

同步玩家

同步玩家

题目描述

有一个 N×NN \times N 的网格,每个格子要么是空的,要么包含障碍物。记 (i,j)(i, j) 为从上数第 ii 行、从左数第 jj 列的格子。

网格中有两个玩家,位于不同的空格子上。关于每个格子的信息以 NN 个长度为 NN 的字符串 S1,S2,,SNS_1, S_2, \ldots, S_N 给出,格式如下:

  • 如果 SiS_i 的第 jj 个字符是 P,则 (i,j)(i, j) 是放置有玩家的空格子。
  • 如果 SiS_i 的第 jj 个字符是 .,则 (i,j)(i, j) 是不含玩家的空格子。
  • 如果 SiS_i 的第 jj 个字符是 #,则 (i,j)(i, j) 包含障碍物。

通过重复执行以下操作,求使两个玩家移动到同一格子所需的最少操作次数。如果无论如何操作都无法使两个玩家移动到同一格子,则输出 -1

选择四个方向(上、下、左、右)之一。然后,每个玩家尝试沿该方向移动到相邻的格子。如果目标格子存在且为空,则玩家移动;否则玩家不移动。

输入格式

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

NN
S1S_1
S2S_2
\vdots
SNS_N

输出格式

输出答案。

样例

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

记从 (3,2)(3, 2) 出发的玩家为玩家 1,从 (4,3)(4, 3) 出发的玩家为玩家 2。

例如,按如下方式操作,可以在三次移动内使两个玩家到达同一格子:

  1. 选择左。玩家 1 移动到 (3,1)(3, 1),玩家 2 移动到 (4,2)(4, 2)
  2. 选择上。玩家 1 不移动,玩家 2 移动到 (3,2)(3, 2)
  3. 选择左。玩家 1 不移动,玩家 2 移动到 (3,1)(3, 1)
2
P#
#P
-1
10
..........
..........
..........
..........
....P.....
.....P....
..........
..........
..........
..........
10

数据范围

  • NN226060 之间的整数(含端点)
  • SiS_i 是由 P.# 组成的长度为 NN 的字符串
  • 恰好有两对 (i,j)(i, j) 使 SiS_i 的第 jj 个字符为 P
难度 普及+/提高-
通过率 100%
尝试 1
已通过 1
ID
3196
类型
传统题
Time Limit
4000ms
Memory Limit
1024MiB
上传者
标签