#include<cstdio>
#include<cstring>
#include<cstdlib>
#include <iostream>
using namespace std;
const int maxn=1010;
int mat[maxn][maxn];
int visit[maxn][maxn];
void dfs(int x,int y)
{
if(visit[x][y]||mat[x][y]==0) return ;
else
{
visit[x][y]=1;
dfs(x-1,y-1);dfs(x-1,y);dfs(x-1,y+1);
dfs(x,y-1); dfs(x,y+1);
dfs(x+1,y-1);dfs(x+1,y);dfs(x+1,y+1);
}
}
int main()
{
int n;
int count=0;
scanf("%d",&n);
memset(mat,0,sizeof(mat));
memset(visit,0,sizeof(visit));
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&mat[i][j]);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(!visit[i][j]&& mat[i][j])
{
count++;
dfs(i,j);
}
printf("%d\n",count);
return 0;
}
运行结果: