Cột trụ ma thuật
Đề bài
Mô tả
Cho một lưới hình chữ nhật gồm hàng và cột. Một số ô của lưới có đặt cột trụ, các ô còn lại để trống.
Một tia sáng di chuyển theo đường thẳng trong lưới. Khi gặp một cột trụ bình thường, tia sáng xuyên qua mà không đổi hướng. Ta có thể dùng phép thuật để biến một cột trụ thành cột trụ ma thuật: khi tia sáng chạm vào một cột trụ ma thuật, tia sáng được phản xạ đồng thời ra cả bốn hướng (lên, xuống, trái, phải) từ ô đó.
Tia sáng xuất phát từ cạnh phải của ô nằm ở góc dưới bên phải, tức ô , và đi sang trái dọc theo hàng . Cánh cửa nằm ở cạnh trái của ô ở góc trên bên trái, tức ô .
Hãy tìm số cột trụ ít nhất cần yểm phép để tia sáng ra được khỏi cánh cửa, hoặc cho biết điều đó là không thể.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và .
- dòng tiếp theo, mỗi dòng gồm ký tự mô tả một hàng của lưới. Ký tự
.là ô trống, ký tự#là ô có cột trụ.
Dữ liệu ra
In ra một số nguyên duy nhất là số cột trụ ít nhất cần yểm phép, hoặc nếu không có cách nào để tia sáng ra khỏi cửa.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 3 .#. ... .#. |
2 | Yểm phép cho cả hai cột trụ, ở ô và ô . Tia sáng đi sang trái dọc hàng , chạm cột trụ ma thuật ở nên được phản xạ lên trên, đi dọc cột tới , ở đó lại được phản xạ sang trái và thoát ra khỏi cửa. |
| 4 3 ##. ... .#. .#. |
2 | Chỉ cần yểm phép hai cột trụ ở và . Tia sáng đi dọc hàng , phản xạ lên tại , rồi xuyên thẳng qua cột trụ bình thường ở mà không đổi hướng, tới thì phản xạ sang trái. Trên đường ra nó lại xuyên qua cột trụ bình thường ở và thoát khỏi cửa. |
Bình luận