计蒜客:C10 第四部分:深度优先搜索基础 引爆炸弹

时间:2024-06-11 11:29:36

【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;
}