求关
```cpp
#include<bits/stdc++.h>
using namespace std;
char mp[205][205];
int vis[205][205];
int n,m;
int dir[8][2]={{-1,-1},{-1,0},{-1,1},
{0,-1},{0,1},
{1,-1},{1,0},{1,1}};
void dfs(int x,int y){
int fx,fy;
for(int i=0;i<8;i++){
fx=x+dir[i][0];
fy=y+dir[i][1];
if(fx>=1&&fx<=n&&fy>=1&&fy<=m&&!vis[fx][fy]&&mp[fx][fy]=='W'){
vis[fx][fy]=1;
dfs(fx,fy);
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>mp[i]+1;
int ans=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(vis[i][j]==0&&mp[i][j]=='W'){
vis[i][j]=1;
dfs(i,j);
ans++;
}
}
}
cout<<ans<<endl;
return 0;
}
by AlexSong @ 2023-08-16 09:17:32
@[SiriusII](/user/653100) 是超时吗?
by ZQIN_P @ 2023-08-16 09:21:30
这道题还是不建议用广搜的,容易爆栈
by ZQIN_P @ 2023-08-16 09:26:07
@[AlexSong](/user/1004299) @[planet_over_for_ever](/user/638459) 謝謝,確實是這個問題
by _Silica_ @ 2023-08-16 09:52:32