香蕉田
编程实现
小猴有一片矩形香蕉林,香蕉林一共被分成了 n x m 个小块,每个小块上会有一颗香蕉树或者是一块空地。我们用 0 表示一块空地,用 1 表示一颗香蕉树,香蕉林之外可以视作全部是空地。
小猴认为一个香蕉田由聚在一起的 1 相连接而组成(上下左右相邻)。
在一个香蕉田 A 中,可以从中选出若干个香蕉树,使得这些香蕉树可以通过上、下、左、右方向连接构成一个“环”。
如果另一个香蕉田 B 所占据的格子全部位于这个“环”内部,就将香蕉田 B 视作香蕉田A 的子香蕉田。
若 B 是 A 的子香蕉田,C 是 B 的子香蕉田,那么 C 也是 A 的子香蕉田。
例如,有 5 x 5 的香蕉林:
其中香蕉田有两个,分别用蓝色区域和绿色区域来表示,但是绿色区域的香蕉田是蓝色区域香蕉田的子香蕉田。如果不统计子香蕉田的个数,那么该香蕉林中只有一个香蕉田。
现在,请你帮助小猴统计一下香蕉林中一共有多少个香蕉田。在进行统计时不需要统计子香蕉田的数目。
输入描述
第一行,包含一个整数 T,表示有 T 组测试数据。( 1≤T≤10 )
对于每一组数据:
第一行包含两个整数 n,m,表示香蕉林的大小。( 1≤n,m≤50 )
接下来的 n 行,每行包含 m 个字符,保证字符只可能是 0 或 1。
输出描述
对于每组数据,输出一行,包含一个整数表示答案。
输入样例
2 5 5 01111 11001 10101 10001 11111 5 6 111111 100001 010101 100001 111111
输出样例
1 3
样例说明
对于第一组数据,包含两个香蕉田,下面用不同的颜色进行了区分:
绿色香蕉田在蓝色香蕉田的“环”内部,所以绿色香蕉田是蓝色香蕉田的子香蕉田,答案为 1。
对于第二组数据,包含三个香蕉田,下面用不同的颜色进行了区分:
注意橙色香蕉田并不是蓝色香蕉田或者绿色香蕉田的子香蕉田 ,因为蓝色香蕉田和绿色香蕉田中均没有“环”,答案为 3。