CF884E Binary Matrix

题目描述

给定一个大小为 $n \times m$ 的矩阵。矩阵中的每个元素都是 $1$ 或 $0$。你需要判断由 $1$ 组成的连通块的数量。若两个格子有公共边界,且它们的元素都是 $1$,则它们属于同一个连通块。 注意,本题的内存限制不同于一般题目!

输入格式

第一行包含两个整数 $n$ 和 $m$($1 \leq n \leq 2^{12}$,$4 \leq m \leq 2^{14}$)——分别表示矩阵的行数和列数。保证 $m$ 能被 $4$ 整除。 接下来 $n$ 行,每行包含 $\frac{m}{4}$ 个一位十六进制数字(这些数字可以是从 $0$ 到 $9$ 的数字,或从 $A$ 到 $F$ 的大写拉丁字母)。这些数字的二进制表示对应于该行接下来的 $4$ 个矩阵元素。例如,如果给出的是 $B$,则对应的元素是 $1011$,如果给出的是 $5$,则对应元素是 $0101$。 元素之间没有空格分隔。

输出格式

输出由 $1$ 组成的连通块的数量。

说明/提示

第一个样例的矩阵为: ``` 0001 1010 1000 ``` 很明显有三个连通块。 第二个样例: ``` 01011111 11100011 ``` 很明显有两个连通块。 第三个样例没有任何 $1$,因此答案为 $0$。 由 ChatGPT 5 翻译