#AT2129. E - Bishop 2

E - Bishop 2

当前没有测试数据。

E - 主教 2

分数:500分

问题描述

我们有一个$N \times N$的棋盘,用$N$个字符串$S_i$来表示棋盘,其中$N$表示棋盘的大小。

每一个字符$S_{i,j}$表示以下情况:

  • 如果$S_{i,j} =$ `.`,则表示$(i, j)$的格子为空。
  • 如果$S_{i,j} =$ `#`,则表示$(i, j)$的格子上有一个白色的兵,不能移动或删除。

我们在棋盘的 $(A_x, A_y)$ 处放了一只白色的主教。
请找出从主教的初始位置$(A_x, A_y)$移动到目标位置 $(B_x, B_y)$的最小移动次数(根据国际象棋规则进行移动)。
如果无法移动到 $(B_x, B_y)$,则报告-1。

解释

在国际象棋中,主教可以按以下规则移动:

  • 对于每个正整数$d$,它可以移动到 $(i+d,j+d)$(对角线向右下移动),如果满足以下条件:

    • 棋盘上存在$(i+d,j+d)$这个格子。
    • 对于所有小于等于$d$的正整数$l$,$(i+l,j+l)$这个格子没有被白色兵占据。
  • 对于每个正整数$d$,它可以移动到 $(i+d,j-d)$(对角线向右上移动),如果满足以下条件:

    • 棋盘上存在$(i+d,j-d)$这个格子。
    • 对于所有小于等于$d$的正整数$l$,$(i+l,j-l)$这个格子没有被白色兵占据。
  • 对于每个正整数$d$,它可以移动到 $(i-d,j+d)$(对角线向左下移动),如果满足以下条件:

    • 棋盘上存在$(i-d,j+d)$这个格子。
    • 对于所有小于等于$d$的正整数$l$,$(i-l,j+l)$这个格子没有被白色兵占据。
  • 对于每个正整数$d$,它可以移动到 $(i-d,j-d)$(对角线向左上移动),如果满足以下条件:

    • 棋盘上存在$(i-d,j-d)$这个格子。
    • 对于所有小于等于$d$的正整数$l$,$(i-l,j-l)$这个格子没有被白色兵占据。

约束

  • $2 \le N \le 1500$
  • $1 \le A_x,A_y \le N$
  • $1 \le B_x,B_y \le N$
  • $(A_x,A_y) \neq (B_x,B_y)$
  • $S_i$是由字符`.`和`#`构成的长度为$N$的字符串。
  • $S_{A_x,A_y} =$ `.`
  • $S_{B_x,B_y} =$ `.`

输入

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

$N$
$A_x$ $A_y$
$B_x$ $B_y$
$S_1$
$S_2$
$\vdots$
$S_N$

输出

输出答案。

5
1 3
3 5
....#
...#.
.....
.#...
#....
3

我们可以按照以下方式将主教从 $(1,3)$ 移动到 $(3,5)$,但无法在两次或更少次移动中完成:

  • $(1,3) \rightarrow (2,2) \rightarrow (4,4) \rightarrow (3,5)$

4
3 2
4 2
....
....
....
....
-1

无法将主教从 $(3,2)$ 移动到 $(4,2)$。


18
18 1
1 18
..................
.####.............
.#..#..####.......
.####..#..#..####.
.#..#..###...#....
.#..#..#..#..#....
.......####..#....
.............####.
..................
..................
.####.............
....#..#..#.......
.####..#..#..####.
.#.....####..#....
.####.....#..####.
..........#..#..#.
.............####.
..................