下面这串代码为什么一运行就崩溃?
#include <bits/stdc++.h>
using namespace std;
int N,M;
char c[109][109];
bool v[109][109];
int dx[] = {1,0,-1,0,1,-1,-1,-1},dy[] = {0,1,0,-1,1,1,-1,1};
void dfs(int x,int y){
v[x][y] = true;
if(c[x][y]!='W'){
return;
}
for(int i = 0;i<8;i++){
int nx = x+dx[i],ny = y+dy[i];
if(nx<1||nx>N||ny<1||ny>M){
continue;
}
if(c[nx][ny]=='.'){
continue;
}
dfs(nx,ny);
}
}
int main(){
cin>>N>>M;
for(int i = 1;i<=N;i++){
for(int j = 1;j<=M;j++){
cin>>c[i][j];
}
}
int ans = 0;
for(int i = 1;i<=N;i++){
for(int j = 1;j<=M;j++){
if(c[i][j]=='W'&&!v[i][j]){
ans++;
dfs(i,j);
}
}
}
cout<<ans;
}