```cpp
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=100+10;
int map[N][N],bin[N][N],queue[N][3],n,m,num=0;
char s[N];
int dx[5]={-1,0,0,1},dy[5]={0,1,-1,0};
void bfs(int x,int y){
bin[x][y]=0;
queue[1][1]=x;
queue[1][2]=y;
int head=0,tail=1,x_pos,y_pos;
num++;
do{
++head;
for(int i=0;i<=3;++i){
x_pos=queue[head][1]+dx[i];
y_pos=queue[head][2]+dy[i];
if(bin[x_pos][y_pos]==1&&x_pos>=0&&x_pos<n&&y_pos>=0&&y_pos<m){
tail++;
queue[tail][1]=x_pos;
queue[tail][2]=y_pos;
bin[x_pos][y_pos]=0;
}
}
}while(head<tail);
}
int main(){
cin>>n>>m;
for(int i=0;i<n;++i){
for(int j=0;j<m;++j) bin[i][j]=1;
}
for(int i=0;i<n;++i){
cin>>s;
int len=strlen(s);
for(int j=0;j<len;++j){
if (s[j]=='0') bin[i][j]=0;
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;++j){
if (bin[i][j]==1) bfs(i,j);
}
}
cout<<num;
return 0;
}
```
by kk22syx @ 2024-03-10 18:01:57