trang chủ / bài tập / arsonfir

Cháy rừng Berland

Đề bài

Mô tả

Khu rừng Berland được biểu diễn bởi một mặt phẳng vô hạn các ô vuông, ở mỗi ô có một cây.

Một đám cháy đã quét qua khu rừng. Bạn được cung cấp bản đồ kích thước n×m mô tả phần rừng bị ảnh hưởng. Ô cháy được đánh dấu là X, ô không cháy là .. Đảm bảo rằng mọi cây bị cháy trên toàn bộ rừng đều nằm trong bản đồ, và tất cả các cây bên ngoài bản đồ đều không bị thiệt hại.

Giả sử đám cháy bắt đầu vào thời điểm 0 tại một tập hợp ô nào đó. Tại cuối mỗi phút, lửa lan từ mỗi ô đang cháy sang 8 ô lân cận (kể cả đường chéo). Đến đầu phút thứ T, lửa được dập tắt. Bạn cần tìm giá trị T lớn nhất có thể sao cho tồn tại một tập ô được đốt ban đầu mà sau T phút lan tỏa cho ra đúng bản đồ ô cháy đã cho (và không có cây nào bên ngoài bản đồ bị cháy).

Với giá trị T tối đa đó, hãy in ra một tập ô khởi điểm hợp lệ bất kỳ.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm.
  • n dòng tiếp theo, mỗi dòng gồm m ký tự X hoặc ., mô tả bản đồ.

Dữ liệu ra

  • Dòng đầu in ra số nguyên T — thời gian cháy lớn nhất có thể.
  • n dòng tiếp theo in ra bản đồ n×m, trong đó các ô khởi điểm được đánh dấu là X, các ô còn lại là ..

Nếu có nhiều tập khởi điểm hợp lệ với T lớn nhất, in ra một tập bất kỳ.

Ràng buộc

  • 1n,m106
  • 1n·m106
  • Bản đồ chứa ít nhất một ô X.

Ví dụ

Input Output Giải thích
3 6
XXXXXX
XXXXXX
XXXXXX
1
......
.XXXX.
......
Đốt 4 ô ở hàng giữa; sau 1 phút lửa lan ra phủ toàn bộ 3×6 ô X. Không thể đạt T=2 vì phải có ô cách biên ít nhất 2.
10 10
.XXXXXX...
.XXXXXX...
.XXXXXX...
.XXXXXX...
.XXXXXXXX.
...XXXXXX.
...XXXXXX.
...XXXXXX.
...XXXXXX.
..........
2
..........
..........
...XX.....
..........
..........
..........
.....XX...
..........
..........
..........
Có hai khối hình chữ nhật 4×6, mỗi khối cho phép đặt ô khởi điểm cách biên khối ít nhất 2. T=2 là tối đa.
4 5
X....
..XXX
..XXX
..XXX
0
X....
..XXX
..XXX
..XXX
Ô X đơn độc ở góc trên trái buộc T=0, vì với T1 thì lửa từ một ô khởi điểm bất kỳ phải lan sang ít nhất 8 ô lân cận — không khớp được với một điểm cô lập.

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