GRID


Gửi bài giải

Điểm: 50
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G

Tác giả:
Kiểu bài tập
Ngôn ngữ cho phép
C++, Python

Cho một bảng kích thước N × N, các dòng và các cột được đánh số từ 0 đến N - 1.

Mỗi ô trên bảng có thể là ô bị cấm hoặc ô không bị cấm.

Bạn được phép di chuyển từ ô (a, b) đến ô (c, d) nếu thỏa mãn:

  • Hai ô nằm trên cùng một dòng hoặc cùng một cột;
  • Đường đi giữa hai ô không đi qua bất kỳ ô bị cấm nào.

Mỗi lần di chuyển từ một ô đến một ô khác được tính là 1 bước.

Yêu cầu: Hãy tìm số bước di chuyển ít nhất để đi từ ô (sₓ, sᵧ) đến ô (eₓ, eᵧ).

INPUT

  • Dòng đầu tiên chứa số nguyên dương N (1 ≤ N ≤ 100), là kích thước của bảng;
  • N dòng tiếp theo, mỗi dòng chứa N ký tự mô tả bảng:
    • X là ô bị cấm;
    • . là ô không bị cấm.
  • Dòng cuối cùng chứa bốn số nguyên sₓ, sᵧ, eₓ, eᵧ, lần lượt là tọa độ ô bắt đầu và ô đích.

OUTPUT

In ra một số nguyên duy nhất là số bước di chuyển ít nhất để đi từ ô (sₓ, sᵧ) đến ô (eₓ, eᵧ).

Ví dụ

Sample Input
3
.X.
.X.
...
0 0 0 2
Sample Output
3
Giải thích

Bảng có dạng:

. X .
. X .
. . .

Một cách đi ngắn nhất từ (0, 0) đến (0, 2) là:

(0,0) → (2,0) → (2,2) → (0,2)

Vì vậy cần ít nhất 3 bước.


Nhận xét

Không có ý kiến tại thời điểm này.