Khu rừng Biridian

Đề bài

Mô tả

Khu rừng Biridian là một lưới gồm r hàng và c cột. Mỗi ô hoặc là cây (không ai đi qua được), hoặc là ô trống. Trên các ô trống có thể có những người huấn luyện thú (gọi tắt là đối thủ), một ô có thể chứa từ 0 đến 9 đối thủ. Có đúng một ô là vị trí xuất phát của bạn và đúng một ô là cửa ra.

Mỗi lượt, bạn thực hiện một trong các hành động sau:

  • Đứng yên.
  • Di chuyển sang một ô kề cạnh không phải cây.
  • Nếu bạn đang đứng ở cửa ra, rời khỏi khu rừng. Chỉ bạn mới được làm điều này, các đối thủ không bao giờ rời rừng.

Sau mỗi lượt đi của bạn, tất cả các đối thủ đồng thời đi một lượt (đứng yên hoặc sang ô kề cạnh không phải cây).

Nếu sau một lượt bạn đứng cùng ô với t>0 đối thủ thì có đúng t trận đấu diễn ra, sau đó t đối thủ đó rời khỏi rừng. Ngay khi bạn rời khỏi rừng thì không còn trận đấu nào nữa, kể cả khi có đối thủ vừa đi tới cửa ra. Các đối thủ không đấu với nhau.

Trước khi bắt đầu, bạn công bố công khai toàn bộ dãy nước đi của mình và sau đó đi đúng theo dãy đó. Vì vậy mọi đối thủ đều biết trước lộ trình của bạn, và mỗi đối thủ sẽ di chuyển sao cho chắc chắn có một trận đấu với bạn nếu điều đó là khả thi; đối thủ nào không thể chặn bạn thì đứng yên.

Hãy tìm số trận đấu nhỏ nhất mà bạn phải tham gia, biết rằng bạn được chọn dãy nước đi tuỳ ý (không cần ngắn nhất) và luôn tồn tại đường đi từ ô xuất phát tới cửa ra.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên rc.
  • r dòng tiếp theo, mỗi dòng c ký tự mô tả lưới:
    • T: ô có cây.
    • S: ô trống, vị trí xuất phát của bạn (xuất hiện đúng một lần).
    • E: ô trống, cửa ra (xuất hiện đúng một lần).
    • Chữ số 09: ô trống có đúng bấy nhiêu đối thủ.

Dữ liệu ra

Một số nguyên duy nhất: số trận đấu nhỏ nhất bạn phải tham gia.

Ràng buộc

  • 1r,c1000
  • Luôn tồn tại đường đi từ S tới E.

Ví dụ

Input Output Giải thích
1 4
SE23
2 Bạn đi sang phải một ô để tới cửa ra. Hai đối thủ ở ô kề cửa ra kịp bước sang trái và chặn bạn. Ba đối thủ còn lại ở xa hơn nên không kịp, họ đứng yên. Sau trận đấu bạn rời rừng.
5 7
000E0T3
T0TT0T0
010T0T0
2T0T0T0
0T0S000
3 Ba đối thủ ở nửa trái (1+2 và ô kề) tới được cửa ra không muộn hơn bạn nên chặn được bạn. Ba đối thủ ở nửa phải bị các hàng cây chắn, đường tới cửa ra của họ dài hơn của bạn nên họ không thể chặn.

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