#sjtu20141C. 矩阵分组

矩阵分组

时间限制: 1.0 秒

空间限制: 256 MB

题目描述

给定一个 N×MN \times M 的矩阵,矩阵中的元素取值为 0,1,−10, 1, -1。 规定矩阵中的两个元素 Ai,jA_{i,j} 和 Ar,cA_{r,c} 属于同一个组别,当且仅当它们满足以下条件:

  1. 它们是相邻的(上下或左右相邻),即 (∣i−r∣=1 且 j=c)(|i-r|=1 \text{ 且 } j=c) 或 (i=r 且 ∣j−c∣=1)(i=r \text{ 且 } |j-c|=1)。
  2. 它们的值相等且不为 0,即 Ai,j=Ar,c≠0A_{i,j} = A_{r,c} \neq 0。

如果是间接相连的(例如 AA 和 BB 同组,BB 和 CC 同组),则 A,B,CA, B, C 都属于同一个组别。

请计算矩阵中共有多少个组别。

输入格式

从标准输入读入数据。

第一行包含两个整数 N,MN, M (1≤N,M≤10001 \le N, M \le 1000),表示矩阵的行数和列数。

接下来 NN 行,每行包含 MM 个整数,表示矩阵的元素。

输出格式

输出到标准输出。

输出一个整数,表示组别的数量。

3 4
1 0 -1 -1
1 1 0 -1
0 1 0 0
2

样例 1 解释

  • 左边的三个 1 组成一个组别。
  • 右上角的三个 -1 组成另一个组别。
  • 0 不参与分组。

子任务

测试点编号 分数 N,M≤N, M \le
1∼31 \sim 3 30 100100
4∼104 \sim 10 70 10001000