【C++代码】
#include<bits/stdc++.h>
using namespace std;
int n,m,ans=0;
char maze[501][501];
bool vis[501][501];
void dfs(int x,int y){
vis[x][y]=true;
for(int i=0;i<m;i++){
if(maze[x][i]=='1'&&!vis[x][i])
dfs(x,i);
}
for(int i=0;i<n;i++){
if(maze[i][y]=='1'&&!vis[i][y])
dfs(i,y);
}
}
int main(){
freopen("boom.in","r",stdin);
freopen("boom.out","w",stdout);
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>maze[i][j];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(maze[i][j]=='1'&&!vis[i][j]){
dfs(i,j);
ans++;
}
}
}
cout<<ans;
return 0;
}