Nam châm đơn cực
Đề bài
Mô tả
Nam châm đơn cực là nam châm chỉ có một cực, hoặc cực bắc hoặc cực nam. Trong thực tế chúng không tồn tại, nhưng đây là một bài toán lập trình nên ta cứ giả sử là có.
Cho một lưới ô. Ban đầu bạn được đặt vào các ô một số nam châm cực bắc và một số nam châm cực nam. Số lượng nam châm đặt vào là tuỳ ý, thậm chí nhiều nam châm có thể nằm chung một ô.
Một thao tác được thực hiện như sau: chọn một nam châm cực bắc và một nam châm cực nam để kích hoạt. Nếu chúng nằm cùng hàng hoặc cùng cột và ở hai ô khác nhau thì nam châm cực bắc dịch chuyển một ô về phía nam châm cực nam. Ngược lại, nếu chúng nằm cùng một ô hoặc không chung hàng cũng không chung cột thì không có gì thay đổi. Nam châm cực nam luôn đứng yên.
Mỗi ô của lưới được tô màu đen hoặc trắng. Hãy xét các cách đặt nam châm sao cho đồng thời thoả mãn:
- Mỗi hàng và mỗi cột đều có ít nhất một nam châm cực nam.
- Với mỗi ô màu đen, tồn tại một dãy thao tác đưa được một nam châm cực bắc tới ô đó.
- Với mỗi ô màu trắng, không có dãy thao tác nào đưa được nam châm cực bắc tới ô đó.
Hãy xác định xem có cách đặt nam châm nào thoả mãn cả ba điều kiện hay không. Nếu có, hãy tìm số nam châm cực bắc ít nhất cần dùng (số nam châm cực nam không bị giới hạn).
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và là số hàng và số cột của lưới.
- dòng tiếp theo mô tả màu của lưới. Dòng thứ là một xâu độ dài , ký tự thứ cho biết màu của ô ở hàng cột . Ký tự
#là ô đen, ký tự.là ô trắng. Dữ liệu bảo đảm xâu chỉ gồm hai loại ký tự này.
Dữ liệu ra
In ra một số nguyên duy nhất là số nam châm cực bắc ít nhất cần dùng.
Nếu không tồn tại cách đặt nam châm thoả mãn, in ra .
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 3 .#. ### ##. |
1 | Toàn bộ các ô đen tạo thành một khối liên thông duy nhất, nên chỉ cần một nam châm cực bắc là đủ. |
| 4 2 ## .# .# ## |
-1 | Cột có ô đen ở hàng và hàng , ngăn cách bởi hai ô trắng. Dù đặt nam châm cực nam của cột ở đâu, một trong hai nam châm cực bắc ở hai ô đen đó cũng bị kéo qua ô trắng, vi phạm điều kiện . |
| 4 5 ....# ####. .###. .#... |
2 | Các ô đen tách thành hai khối liên thông: ô ở hàng cột , và phần còn lại. Mỗi khối cần một nam châm cực bắc riêng. |
| 3 5 ..... ..... ..... |
0 | Không có ô đen nào, chỉ cần đặt một nam châm cực nam vào mọi ô và không dùng nam châm cực bắc nào. |
| 2 1 . # |
-1 | Hàng toàn ô trắng nhưng vẫn phải chứa một nam châm cực nam, giả sử ở cột . Khi đó mọi nam châm cực bắc nằm ở cột đều bị kéo lên hàng là ô trắng, nên cột cũng buộc phải toàn trắng. Nhưng ô ở hàng cột lại màu đen, mâu thuẫn. |
Bình luận