trang chủ / đề bài / icpc25_mt_j

Mê cung sinh tồn

Đề bài

Mô tả

Ở một vùng đất chìm trong tĩnh lặng và đá tảng, một chiến binh đơn độc tên Riven tỉnh dậy bên trong một mê cung chết chóc. Anh không nhớ mình đã đến đây bằng cách nào, chỉ biết sứ mệnh của mình: tới được điểm đích trước khi cạn kiệt sức lực.

Mặt đất xung quanh tạo thành một hoa văn kỳ lạ, như một lưới ô được khắc bởi một bàn tay vô hình. Có ô an toàn, có ô bị nguyền rủa. Một dòng chữ khắc trên tường ghi:

  • -: Ô an toàn
  • +: Bẫy chết người, mỗi lần bước vào sẽ mất 1 HP (điểm sinh lực)
  • S: Điểm xuất phát, nơi Riven đang đứng
  • D: Điểm đích, lối thoát tự do

Riven chỉ còn 3 HP. Mỗi lần bước vào một ô bẫy, anh mất 1 HP. Nếu HP giảm về 0, anh sẽ chết. Mỗi bước di chuyển (lên, xuống, trái hoặc phải sang ô kề cạnh) tốn 1 đơn vị thời gian.

Yêu cầu: Tìm thời gian ngắn nhất để Riven tới được điểm đích mà vẫn còn sống.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên R, C: số hàng và số cột.
  • R dòng tiếp theo, mỗi dòng chứa C ký tự (không có dấu cách) mô tả mê cung. Lưới chỉ gồm các ký tự S (xuất phát), D (đích), + (bẫy) và - (ô an toàn).

Dữ liệu ra

In ra số bước ít nhất để Riven tới điểm đích với HP >0. Nếu không có cách nào, in ra −1.

Ràng buộc

  • 2≤R,C≤100
  • Lưới có đúng một ô S và đúng một ô D.

Ví dụ

Input Output Giải thích
2 4
S++D
----
3 Đi thẳng sang phải qua hai bẫy, còn 1 HP khi tới đích.
2 5
S+++D
+-+--
6 Đi thẳng phải qua ba bẫy thì chết. Đường (1,1)→(1,2)→(2,2)→(2,3)→(2,4)→(2,5)→(1,5) chỉ qua hai bẫy.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0