C0762 空间折叠


空间折叠

题目描述

在古老的星尘遗迹中,地面被划分为 H 行 W 列的石板网格。每块石板要么是完好的(用. 表示),要么是破碎的(用# 表示),只有完好石板才能安全站立。你从入口 (Ch,Cw) 出发,要前往祭坛 (Dh,Dw)。入口和祭坛保证是完好石板,且位置不同。

你可以执行以下两种行动:

  • 步行:向上、下、左、右移动到相邻的完好石板。该行动 不消耗能量。
  • 空间折叠:以当前石板为中心,向 5x5 的方形区域(即行偏移 -2 到 +2,列偏移 -2到 +2)内的任意完好石板瞬间传送。该行动消耗1点能量,且不能超出遗迹边界。

请你计算从入口到祭坛所需的最少能量消耗。如果无法到达,输出 -1。

输入

第一行,两个整数 H W。

第二行,两个整数 Ch Cw。

第三行,两个整数 Dh Dw。

接下来 H 行,每行一个长度为 W 的字符串,第 i 行表示迷宫的第 i 行, 其中 . 表示道路,# 表示墙壁。

输出

输出一个整数,表示最少能量消耗次数。若无法到达,输出 -1。

数据范围

1≤H,W≤10^3

1≤Ch,Dh≤H

1≤Cw,Dw≤W

迷宫中为 # 或 .

起点(Ch,Cw)和终点(Dh,Dw)均为道路。

起点与终点不同。

输入样例1

4 4

1 1

4 4

..#.

..#.

.#..

.#..

输出样例1

1

输入样例2

4 4

1 4

4 1

.##.

####

####

.##.

输出样例2

-1

输入样例3

4 4

2 2

3 3

....

....

....

....

输出样例3

0

输入样例4

4 5

1 2

2 5

#.###

####.

#..##

#..##

输出样例4

2

答题记录
就绪