trang chủ / đề bài / icpc24_mt_e

Thử thách trên đảo

Đề bài

Mô tả

Trong một trò chơi điện tử, nhân vật của bạn phải vượt qua một thử thách trên một hòn đảo: ghé thăm tất cả các ngôi đền trên đảo.

Hòn đảo được mô tả bởi một bảng hình chữ nhật R×C. Mỗi ô của bảng là núi, đền hoặc đất trống. Đền được ký hiệu bởi ký tự S, núi bởi ký tự #, đất trống bởi ký tự .. Núi rất cao và nguy hiểm nên nhân vật không thể đi vào các ô núi, chỉ có thể đi vào ô đền hoặc ô đất trống.

Ban đầu nhân vật đứng ở ô (1,1), ô này chắc chắn là đất trống. Khi đang ở ô (i,j), nhân vật chỉ có thể di chuyển sang một trong các ô (i+1,j), (i−1,j), (i,j+1), (i,j−1) và không được rời khỏi đảo. Mỗi bước di chuyển mất 1 đơn vị thời gian. Đi qua một ô đền nghĩa là đã ghé thăm ngôi đền đó.

Để chiến thắng, nhân vật phải ghé thăm cả N ngôi đền trong thời gian ít nhất. Cho bản đồ hòn đảo, hãy tìm thời gian ít nhất đó.

Dữ liệu vào

  • Dòng đầu tiên chứa ba số nguyên dương R, C, N (1≤R,C≤100, 1≤N≤15).
  • R dòng tiếp theo, mỗi dòng gồm C ký tự thuộc ., #, S, lần lượt là đất trống, núi và đền. Bản đồ có đúng N ký tự S, và ô (1,1) chắc chắn là đất trống.

Dữ liệu ra

In ra một số nguyên là thời gian ít nhất để ghé thăm cả N ngôi đền. Nếu không có cách nào, in ra −1.

Ràng buộc

  • 1≤R,C≤100
  • 1≤N≤15

Ví dụ

Input Output Giải thích
3 6 3
.S..#.
..#.#.
S.#S..
9 Đường đi (1,1)→(2,1)→(3,1)→(3,2)→(2,2)→(1,2)→(1,3)→(1,4)→(2,4)→(3,4) gồm 9 bước.
3 3 2
.#.
#S.
..S
-1 Ô xuất phát bị núi chặn, không thể đến ngôi đền nào.

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