//注意:这是DFS!!!!!!!!!!!!!!!!!!!!!!!!!
#include<bits/stdc++.h>
using namespace std;
int dx[8]={-1,-1,-1,0,0,1,1,1};
int dy[8]={-1,0,1,-1,1,-1,0,1};//各个方向
int a[1001][1001];//保存地图
int n,m,ans;
void dfs(int x,int y)
{
for(int i=0;i<=7;i++)//向8个方向枚举
{
int xx=x+dx[i];
int yy=y+dy[i];
if(a[xx][yy]==1)//只要找到联通得其他数字就标记为0
{
a[xx][yy]=0;
dfs(xx,yy);
}
}
return;
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
char c;
cin>>c;
if(c=='0') a[i][j]=0;//1为别的东西,0为0
else a[i][j]=1; //判断出界
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){//枚举每一个点
if(a[i][j]==1){
ans++;
dfs(i,j);
}
}
}
cout<<ans<<endl;
return 0;
}
\mathbf\color{red} WA 30求调(玄关)