[C10_HCM_PTNK_24] San lắp

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Pascal, Python

Bản đồ một vùng đất là một hình chữ nhật kích thước ~m \times n~ được chia làm lưới ô vuông đơn vị, các hàng của lưới được đánh số từ ~1~ tới ~m~ từ trên xuống dưới và các cột của lưới được đánh số từ ~1~ tới ~n~ từ trái qua phải. Ô nằm trên giao của hàng ~x~, cột ~y~ được gọi là ô ~(x, y)~, mỗi ô có hai trạng thái là ô nước hay ô đất. Bản đồ được mô tả bởi bảng ~h(m \times n)~ với ~h_{xy} = 1~ nếu ô ~(x, y)~ là đất và ~h_{xy} = 0~ nếu ô ~(x, y)~ là nước.

Những ô đất tạo thành những "đảo" định nghĩa như sau: Hai ô đất gọi là cùng đảo nếu ta có thể đi từ ô này tới ô kia bằng cách di chuyển qua các ô kề cạnh là đất, ngược lại hai ô đó được coi là nằm trên hai đảo khác nhau.

Ví dụ với bản đồ dưới đây, ta có ~4~ đảo.

Imgur

Yêu cầu

Bạn được phép lấp đúng ~1~ ô nước để trở thành ô đất (tức là đổi giá trị một ô ~0~ thành ~1~) sao cho sau khi lấp thì nhận được một đảo có diện tích lớn nhất có thể.

Dữ liệu đầu vào

Gồm ~m + 1~ dòng:

  • Dòng 1 chứa hai số nguyên dương ~m, n \le 1000~;
  • ~m~ dòng tiếp theo, dòng thứ ~i~ chứa ~n~ số, số thứ ~j~ là ~h_{ij} = 0~ hoặc ~1~.

Các số trên một dòng được ghi cách nhau ít nhất một dấu cách. Dữ liệu đảm bảo trên bản đồ có ít nhất một ô bằng ~0~.

Dữ liệu đầu ra

Gồm một số nguyên duy nhất là số ô của đảo lớn nhất nhận được sau khi lấp một ô.

Ràng buộc dữ liệu

  • Có 20% số test với bảng chỉ có đúng một hòn đảo;
  • Có 40% số test khác với ~m, n \le 50~;
  • 40% số test còn lại không có giới hạn gì thêm.

Ví dụ

Ví dụ 1
INPUT
6 6
1 0 1 0 1 1
1 0 1 0 1 1
1 1 1 0 0 0
0 0 0 1 1 1
1 1 0 0 1 0
1 1 1 0 1 1
OUTPUT
14

Giải thích: Có thể chọn lắp ô ~(4, 3)~ nhận bản đồ:

1 0 1 0 1 1

1 0 1 0 1 1

1 1 1 0 0 0

0 0 1 1 1 1

1 1 0 0 1 0

1 1 1 0 1 1

Trên bản đồ có đảo gồm ~14~ ô.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.