cpp
复制代码
#include<bits/stdc++.h>
using namespace std;
int n,m,ans=0;
char maze[110][110];
bool vis[110][110];
int dir[4][2]={{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
bool check(int x,int y){
return x>=1&&y>=1&&x<=n&&y<=m&&!vis[x][y]&&maze[x][y]=='#';
}
void dfs(int x,int y){
vis[x][y]=true;
for(int i=0;i<4;i++){
int tx=x+dir[i][0];
int ty=y+dir[i][1];
if(check(tx,ty)){
dfs(tx,ty);
}
}
}
int main(){
freopen("hiking.in","r",stdin);
freopen("hiking.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>maze[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(maze[i][j]=='#'&&!vis[i][j]){
dfs(i,j);
ans++;
}
}
}
cout<<ans;
return 0;
}