#include<bits/stdc++.h>
using namespace std;
int d=0;
int b=0;
int k=0;
void dfs(vector<vector<int>>& arr,int x,int y){
int size1=arr.size();
int size2=arr[0].size();
if(!(x>=0 && x<size1 &&y>=0 && y<size2) )return;
if(arr[x][y]==0)return ;
if(arr[x][y]!=1) k=1;
arr[x][y]=0;
dfs(arr,x+1,y);
dfs(arr,x-1,y);
dfs(arr,x,y+1);
dfs(arr,x,y-1);
}
int main(){
int m,n;
cin>>m>>n;
vector<vector<int>> arr(m,vector<int>(n));
char c;
getchar();
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cin>>c;
arr[i][j]=c-'0';
}
getchar();
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(arr[i][j]!=0){
d++;
k=0;
dfs(arr,i,j);
if(k==1) b++;
}
}
}
cout<<d<<" "<<b<<endl;
return 0;
}
每日一题(PYAL2-048):寻宝图--dfs
2024-04-27 12:30:03 13 阅读