#aBC176D. [ABC176D] Wizard in Maze

[ABC176D] Wizard in Maze

AT_abc176_d [ABC176D] Wizard in Maze

题目描述

有一个由 HHWW 列组成的 H×WH\times W 的迷宫。

ii 行第 jj 列的格子 (i,j)(i,j),如果 SijS_{ij}#,则为墙,否则为道路。

有一位魔法使站在格子 (Ch,Cw)(C_h,C_w)。魔法使可以通过以下两种方式移动:

  • 移动A:步行到当前格子上下左右相邻的道路格子。
  • 移动B:以当前格子为中心,在 5×55\times 5 的范围内,通过魔法瞬移到任意道路格子。

无论哪种移动方式,都不能移动到迷宫外。

请问,最少需要使用多少次魔法瞬移才能到达格子 (Dh,Dw)(D_h,D_w)?如果无法到达,则输出 1-1

输入格式

输入按以下格式从标准输入读入。

HH WW ChC_h CwC_w DhD_h DwD_w
S11S1WS_{11}\ldots S_{1W}
\vdots
SH1SHWS_{H1}\ldots S_{HW}

输出格式

输出到达 (Dh,Dw)(D_h,D_w) 所需的最小魔法瞬移次数。如果无法到达,则输出 1-1

输入输出样例 #1

输入 #1

4 4
1 1
4 4
..#.
..#.
.#..
.#..

输出 #1

1

输入输出样例 #2

输入 #2

4 4
1 4
4 1
.##.
####
####
.##.

输出 #2

-1

输入输出样例 #3

输入 #3

4 4
2 2
3 3
....
....
....
....

输出 #3

0

输入输出样例 #4

输入 #4

4 5
1 2
2 5
#.###
####.
#..##
#..##

输出 #4

2

说明/提示

限制条件

  • 1H,W1031 \leq H,W \leq 10^3
  • 1Ch,DhH1 \leq C_h,D_h \leq H
  • 1Cw,DwW1 \leq C_w,D_w \leq W
  • SijS_{ij} 仅为 #.
  • SChCwS_{C_h C_w}SDhDwS_{D_h D_w} 均为 .
  • (Ch,Cw)(Dh,Dw)(C_h,C_w) \neq (D_h,D_w)

样例解释 1

例如,可以先步行到 (2,2)(2,2),再从 (2,2)(2,2) 用魔法瞬移到 (4,4)(4,4),这样魔法瞬移的最小次数为 11。步行不能斜着走。

样例解释 2

无法从当前位置移动。

样例解释 3

不需要使用魔法瞬移。

由 ChatGPT 4.1 翻译