#include <stdio.h>
int dir[4][2] = { 0,1,0,-1,1,0,-1,0 };
int n, m;
int mat[1005][1005];
void dfs(int x, int y)
{
mat[x][y] = 0;
int i, tx, ty;
for (i = 0; i<4; ++i)
{
tx = x + dir[i][0];
ty = y + dir[i][1];
if (tx<0 || tx >= n || ty<0 || ty >= m)continue;
if (mat[tx][ty])
dfs(tx, ty);//递归访问周围的地图
}
}
int main()
{
while (scanf("%d %d", &n, &m) != EOF)
{
int ans = 0;
int i, j;
for (i = 0; i < n; ++i)
for (j = 0; j < m; ++j)
scanf("%d", &mat[i][j]);//录入
for (i = 0; i < n; ++i)
for (j = 0; j < m; ++j)
if (mat[i][j])
{
++ans;
dfs(i, j);
}//通过改变地图,判断细胞数
printf("%d", ans);
}
return 0;
}
swust.oj 0964
最新推荐文章于 2022-11-18 12:11:08 发布