#5203. LABYRINTH - Tìm đường trong mê cung

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho một mê cung được biểu diễn bằng lưới ô vuông kích thước N \times M . Một số ô là tường ('#'), không thể đi vào, và một số ô là đường đi ('.'). Có một ô xuất phát ('A') và một ô đích ('B').

Bạn có thể di chuyển từ một ô sang các ô kề cạnh (lên, xuống, trái, phải). Hãy tìm đường đi ngắn nhất (ít bước nhất) từ 'A' đến 'B'. Nếu không có đường đi, hãy cho biết.

Dữ liệu:

  • Dòng đầu tiên chứa hai số nguyên n, m\ (1 \le n, m \le 1000) .
  • n dòng tiếp theo, mỗi dòng chứa m ký tự mô tả mê cung.

Kết quả:

  • Nếu có đường đi, dòng đầu tiên in ra "YES", dòng thứ hai in ra độ dài của đường đi ngắn nhất.
  • Nếu không có đường đi, in ra "NO".

Ví dụ:

Dữ liệu:

5 8
########
#.A#...#
#.#.##.#
#.#..#B#
########

Kết quả:

YES
9

Giới hạn:

  • 1 \le n, m \le 1000