Ba Quốc Gia

Đề bài

Mô tả

Cho bản đồ là một bảng hình chữ nhật gồm n hàng và m cột. Mỗi ô trên bản đồ được biểu diễn bằng một ký tự với các ý nghĩa sau:

  • Các ký tự 1, 2, 3 biểu thị ô thuộc về quốc gia tương ứng (1, 2 hoặc 3).
  • Ký tự . biểu thị một ô trống có thể xây đường đi qua.
  • Ký tự # biểu thị một ô không thể xây đường (cấm xây).

Một ô được gọi là đi được nếu nó thuộc về một trong ba quốc gia, hoặc đã được xây đường tại đó. Từ một ô đi được, ta có thể di chuyển sang ô đi được liền kề theo bốn hướng lên / xuống / trái / phải, miễn là ô đó tồn tại trong bảng.

Hãy tìm số lượng ô tối thiểu cần xây đường (chỉ được xây trên các ô .) sao cho từ một ô bất kỳ của một quốc gia có thể đi tới một ô bất kỳ của hai quốc gia còn lại thông qua các ô đi được. Nếu không thể đạt được mục tiêu, in ra 1.

Đảm bảo rằng ban đầu các ô cùng thuộc một quốc gia đã liên thông với nhau (chỉ đi qua các ô của quốc gia đó), và mỗi quốc gia có ít nhất một ô trên bản đồ.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên nm (1n,m1000) — số hàng và số cột.
  • n dòng tiếp theo, mỗi dòng chứa m ký tự mô tả các hàng của bản đồ.

Dữ liệu ra

In ra một số nguyên duy nhất — số ô tối thiểu cần xây đường, hoặc 1 nếu không thể.

Ràng buộc

  • 1n,m1000
  • Mỗi ký tự trên bản đồ thuộc tập {1, 2, 3, ., #}.
  • Các ô cùng quốc gia ban đầu đã liên thông; mỗi quốc gia có ít nhất một ô.

Ví dụ

Input Output Giải thích
4 5
11..2
#..22
#.323
.#333
2 Xây đường tại 2 ô . (ví dụ (0,2)(0,3) ở hàng đầu) là đủ để nối ba quốc gia.
1 5
1#2#3
-1 Hai ô # chặn hoàn toàn nên không thể nối ba quốc gia.
3 1
3
1
2
0 Ba quốc gia đã liền kề theo chiều dọc, không cần xây thêm đường.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0