trang chủ / đề bài / gr04_lake

Lấp hồ

Đề bài

Mô tả

Cho bản đồ hình chữ nhật gồm n hàng, m cột. Mỗi ô là đất (#) hoặc nước (.). Hai ô nước thông nhau nếu chúng chung một cạnh (chỉ đi lên, xuống, trái, phải; hai ô chỉ chạm nhau ở góc thì không thông nhau).

Một hồ là một vùng nước liên thông (lớn nhất có thể) không chứa ô nào nằm ở mép bản đồ (hàng đầu, hàng cuối, cột đầu hoặc cột cuối). Nói cách khác, nước trong hồ không thể chảy ra ngoài bản đồ.

Người ta lấp đầy mọi hồ bằng đất. Hãy cho biết số hồ, tổng số ô bị lấp và bản đồ sau khi lấp.

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 chỉ gồm # và ..

Dữ liệu ra

  • Dòng đầu in hai số nguyên: số hồ và tổng số ô bị lấp.
  • n dòng tiếp theo in bản đồ sau khi lấp.

Ràng buộc

  • 1≤n,m≤1000

Ví dụ

Input Output Giải thích
7 8
#######.
#..#..#.
#..#.##.
####....
#.#.###.
#.#.#.#.
###.###.
3 7
#######.
####..#.
####.##.
####....
###.###.
###.###.
###.###.
Ba hồ: khối 2×2 ở góc trên trái, hai ô ở cột 2 (hàng 5, 6) và một ô ở hàng 6 cột 6. Vùng ba ô ở hàng 2, 3 không phải hồ vì nó thông xuống hàng 4 rồi ra mép phải. Vùng nước ở cột 4 (hàng 5 đến 7) chạm mép dưới nên cũng không phải hồ.
5 5
#####
#...#
#.#.#
#...#
##.##
0 0
#####
#...#
#.#.#
#...#
##.##
Vùng nước bao quanh ô đất ở giữa thông ra mép dưới qua ô ở hàng 5 cột 3, nên không có hồ 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