trang chủ / đề bài / gr05_walls

Phá tường thoát ra

Đề bài

Mô tả

Một robot bị kẹt trong một bản đồ n hàng, m cột. Ô # là tường, ô . là ô trống, robot đứng ở ô S (ô trống). Mỗi bước robot đi sang một ô chung cạnh (lên, xuống, trái, phải). Robot có thể đi vào ô tường, nhưng trước đó phải phá bức tường ấy; tường đã phá thì trở thành ô trống.

Robot thoát được khi nó đứng ở một ô thuộc mép bản đồ (hàng đầu, hàng cuối, cột đầu hoặc cột cuối), vì từ đó chỉ cần bước thêm một bước là ra ngoài.

Hãy tính số bức tường ít nhất robot phải phá để thoát ra.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n,m.
  • n dòng tiếp theo, mỗi dòng là một xâu độ dài m gồm các ký tự ., #, S. Có đúng một ký tự S.

Dữ liệu ra

In một số nguyên: số bức tường ít nhất cần phá.

Ràng buộc

  • 1≤n,m≤1000

Ví dụ

Input Output Giải thích
7 7
#######
#.....#
#.###.#
#.#S#.#
#.#.#.#
#...#..
#####.#
0 Đi xuống, sang trái, lên trên, sang phải rồi xuống theo hành lang để đến ô trống ở mép phải hoặc mép dưới, không cần phá tường.
5 5
#####
##.##
#.S.#
##.##
#####
1 Mọi ô ở mép đều là tường, nên phải phá ít nhất một bức, ví dụ đi lên một ô rồi phá ô tường phía trê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.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