QJ3513 - Số lượng đảo
Xem dưới dạng PDFLan có một tấm bản đồ dạng lưới kích thước $M \times N$ , có thể xem nó như một mảng hai chiều chỉ gồm các ký tự '0' (biểu thị nước biển) và '1' (biểu thị đất liền); phần bên ngoài bản đồ được coi là toàn bộ là nước biển.
Mỗi hòn đảo được hình thành bởi các ô '1' kề nhau theo bốn hướng trên/dưới/trái/phải.
Định nghĩa vòng và đảo con
Vòng: trong các ô mà đảo $A$ chiếm giữ, nếu chọn được $k$ ô khác nhau có tọa độ sắp xếp thỏa mãn:
$(x_0,y_0),(x_1,y_1),\dots,(x_{k-1},y_{k-1})$
và $(x_{(i+1) \bmod k}, y_{(i+1) \bmod k})$ nhận được từ $(x_i,y_i)$ bằng một bước di chuyển lên/xuống/trái/phải, thì $k$ ô này tạo thành một vòng.
Đảo con: nếu mọi ô của đảo $B$ đều nằm bên trong một vòng của đảo $A$ thì $B$ là đảo con của $A$ ; quan hệ đảo con có tính bắc cầu ( $B$ là đảo con của $A$ , $C$ là đảo con của $B$ $\implies C$ là đảo con của $A$ ).
Yêu cầu của bài toán
Đếm tổng số đảo trên bản đồ, không đếm các đảo con.
Dữ liệu vào
Dòng đầu tiên là một số nguyên $T$ , cho biết số bộ dữ liệu.
Với mỗi bộ dữ liệu:
Dòng đầu tiên gồm hai số nguyên $M, N$ , là số hàng và số cột của bản đồ.
$M$ dòng tiếp theo, mỗi dòng gồm $N$ ký tự (chỉ gồm
'0'/'1').
Dữ liệu ra
Với mỗi bộ dữ liệu, in ra một dòng gồm một số nguyên là đáp án.
Ví dụ
Input
2
5 5
01111
11001
10101
10001
11111
5 6
111111
100001
010101
100001
111111
Output
1
3
Ghi chú
Giải thích ví dụ
Bộ dữ liệu thứ nhất: gồm hai hòn đảo, đảo bên trong là đảo con của đảo bên ngoài, đáp án cuối cùng là $1$ .
```Plain Text
01111 11001 10201 10001 11111 ```
Bộ dữ liệu thứ hai: gồm ba hòn đảo độc lập, không có cấu trúc vòng, không có đảo con, đáp án cuối cùng là $3$ .
```Plain Text
111111 100001 020301 100001 111111 ```
Quy mô dữ liệu và ràng buộc
30% test: $1 \le M,N \le 10$
100% test: $1 \le T \le 10$ , $1 \le M,N \le 50$
Nhận xét