Lái xe ít rẽ nhất
Xem dưới dạng PDF
Gửi bài giải
Điểm:
30
Giới hạn thời gian:
1.5s
Giới hạn bộ nhớ:
256M
đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Kiểu bài tập
An đang lái xe trên một bãi thử nghiệm hình lưới ô vuông kích thước \(R \times C\). Lưới gồm các ô trống \(.\) và các chướng ngại vật \(#\). An xuất phát từ ô \((1, 1)\) và cần lái xe đến ô \((R, C)\).
Khi lái xe, hướng di chuyển ban đầu của xe có thể chọn là một trong bốn hướng: Lên, Xuống, Trái, Phải. Khi di chuyển:
- Nếu xe đi thẳng tiếp tục theo hướng cũ sang ô kề cạnh kề bên, chi phí rẽ hướng bằng \(0\).
- Nếu xe rẽ hướng (chuyển sang hướng vuông góc với hướng vừa đi), chi phí rẽ hướng bằng \(1\).
Chú ý: Xe chỉ được di chuyển vào các ô trống \(.\) và không được đi ra ngoài lưới.
Hãy giúp An tìm số lần rẽ hướng ít nhất để đi tới đích.
Định dạng đầu vào
- Dòng đầu chứa hai số nguyên \(R\) và \(C\) (\(1 \le R, C \le 1000\)).
- \(R\) dòng tiếp theo, mỗi dòng chứa một chuỗi ký tự độ dài \(C\) mô tả lưới. Ô \((1, 1)\) và ô \((R, C)\) luôn là \(.\).
Định dạng đầu ra
- Một số nguyên duy nhất là số lần rẽ hướng tối thiểu. Nếu không thể đi tới, in ra \(-1\).
Ràng buộc
| Subtask | Tỉ lệ điểm | Ràng buộc |
|---|---|---|
| 1 | 40% | \(R, C \le 50\) |
| 2 | 60% | Không có ràng buộc gì thêm |
Ví dụ
Input:
3 3
...
.#.
...
Output:
1
Nhận xét