1234 • 13小时前
using namespace std; int grid[305][305]; void dfs(int grid[305][305],int i,int j,int m,int n){
if(i<0||i>=m||j<0||j>=n||grid[i][j]==1){
return;
}
grid[i][j]=1;
dfs(grid,i+1,j,m,n);
dfs(grid,i-1,j,m,n);
dfs(grid,i,j+1,m,n);
dfs(grid,i,j-1,m,n);
} int main() {
int m,n,cnt=0;
cin>>m>>n;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cin>>grid[i][j];
}
}
for(int i=0;i<m;i++){
if(grid[i][0]==0){
dfs(grid,i,0,m,n);
}if(grid[i][n-1]==0){
dfs(grid,i,n-1,m,n);
}
}
for(int i=0;i<n;i++){
if(grid[0][i]==0){
dfs(grid,0,i,m,n);
}if(grid[m-1][i]==0){
dfs(grid,m-1,i,m,n);
}
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(grid[i][j]==0){
dfs(grid,i,j,m,n);
cnt++;
}
}
}
cout<<cnt;
return 0;
}
评论:
请先登录,才能进行评论