#LAISIR78. 題目:迷宮會合
題目:迷宮會合
題目:迷宮會合
題目描述
有一個 n×m 的迷宮,由兩種格子組成:
- '.' 表示可以通行的空地
- '#' 表示障礙物,不能通過
兩個探險家 A 和 B 同時從不同位置出發:
- A 從 (x1, y1) 出發,目標是到達 (xn, yn)
- B 從 (x2, y2) 出發,目標是到達 (xm, ym)
他們每秒可以向上、下、左、右移動一格(不能斜向移動,不能走出邊界,不能進入障礙物)。
當兩人在同一時間到達同一個格子時,他們可以會合。
請計算兩人會合所需的最少時間。如果不能會合,輸出 -1。
輸入格式
第一行兩個整數 n, m(2 ≤ n, m ≤ 1000)
接下來 n 行,每行 m 個字符,表示迷宮地圖
接下來四行,每行兩個整數:
- 第一行:x1 y1(A的起點,1 ≤ x1 ≤ n, 1 ≤ y1 ≤ m)
- 第二行:x2 y2(B的起點,1 ≤ x2 ≤ n, 1 ≤ y2 ≤ m)
- 第三行:xn yn(A的目標,1 ≤ xn ≤ n, 1 ≤ yn ≤ m)
- 第四行:xm ym(B的目標,1 ≤ xm ≤ n, 1 ≤ ym ≤ m)
保證起點和目標位置都是空地 '.'。
輸出格式
一個整數,表示最少會合時間。如果不能會合,輸出 -1。
輸入範例 1
5 5
.....
.###.
.....
.###.
.....
1 1
5 5
5 1
1 5
輸出範例 1
8
輸入範例 2
4 4
....
.##.
.##.
....
1 1
4 4
4 1
1 4
輸出範例 2
-1
數據範圍
- 30% 數據:n, m ≤ 50
- 60% 數據:n, m ≤ 200
- 100% 數據:n, m ≤ 1000
Related
In following homework: