trang chủ / bài tập / crazyrobot

Robot Điên

Đề bài

Mô tả

Có một lưới gồm n hàng và m cột. Mỗi ô của lưới hoặc trống hoặc bị chặn. Một ô trống chứa phòng thí nghiệm. Tất cả các ô nằm ngoài biên của lưới cũng được coi là bị chặn.

Một con robot điên đã trốn khỏi phòng thí nghiệm. Hiện tại nó đang ở một ô trống nào đó. Bạn có thể gửi cho robot một trong các lệnh sau: "sang phải", "xuống dưới", "sang trái" hoặc "lên trên". Mỗi lệnh yêu cầu robot di chuyển sang ô kề theo hướng tương ứng.

Tuy nhiên vì robot bị điên, nó sẽ làm mọi thứ trừ việc tuân theo lệnh. Khi nhận một lệnh, robot sẽ chọn một hướng khác với hướng trong lệnh sao cho ô theo hướng đó không bị chặn, rồi di chuyển sang ô kề đó. Nếu có nhiều hướng như vậy, robot tự chọn một hướng bất kỳ trong số đó. Nếu không có hướng nào thỏa mãn, robot đứng yên.

Ta muốn đưa robot về phòng thí nghiệm để sửa. Với mỗi ô trống, hãy xác định xem robot có thể bị buộc phải về phòng thí nghiệm nếu xuất phát từ ô đó hay không. Nghĩa là, sau mỗi bước của robot ta luôn có thể chọn một lệnh để gửi, sao cho dù robot chọn hướng nào (khác hướng lệnh) đi nữa thì cuối cùng nó vẫn đến được phòng thí nghiệm.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t (số bộ dữ liệu).
  • Mỗi bộ dữ liệu:
    • Dòng đầu chứa hai số nguyên nm (số hàng và số cột).
    • n dòng tiếp theo mô tả lưới, mỗi dòng gồm m ký tự thuộc một trong ba loại:
      • . — ô trống;
      • # — ô bị chặn;
      • L — ô chứa phòng thí nghiệm.

Lưới chứa đúng một phòng thí nghiệm.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra lưới kết quả: thay các ô trống (ký tự .) mà robot có thể bị buộc về phòng thí nghiệm bằng dấu cộng (+). Các ô còn lại giữ nguyên.

Ràng buộc

  • 1t1000
  • 1n,m106n·m106
  • Tổng n·m trên tất cả các bộ dữ liệu không vượt quá 106.

Ví dụ

Input Output Giải thích
4
3 3
...
.L.
...
4 5
#....
..##L
...#.
.....
1 1
L
1 9
....L..#.
...
.L.
...
#++++
..##L
...#+
...++
L
++++L++#.
Ở bộ đầu tiên, không ô trống nào có thể buộc robot về được: từ một ô góc, dù ra lệnh gì robot cũng đi sang ô biên khác; từ ô không phải góc, robot luôn có thể chọn hướng để đi vào một ô góc. Ở bộ cuối, cứ gửi lệnh ngược với hướng dẫn tới phòng thí nghiệm thì robot buộc phải tiến về phía đó.
1
3 25
######################..#
.......................L.
######################..#
######################++#
+++++++++++++++++++++++L+
######################++#
Cả hành lang một hàng bị buộc về phòng thí nghiệm; hai ô trống ở nhánh cụt phía trên và dưới cạnh L cũng vậy vì mỗi ô đó chỉ có một hướng thoát.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0