全TLE,我是不是方法用错了?
#include<bits/stdc++.h>
using namespace std;
int n,m,cnt,b[10005][10005];
char a[10005][10005];
bool e=0;
void dfs(int x,int y){
if(a[x][y]=='o'){e=1;cnt++;return;}
if(e==1)return;
if(a[x][y]=='u'&&x-1>0&&b[x-1][y]==0){
b[x-1][y]=1;
dfs(x-1,y);
b[x-1][y]=0;
}
if(a[x][y]=='d'&&x+1<=n&&b[x+1][y]==0){
b[x+1][y]=1;
dfs(x+1,y);
b[x+1][y]=0;
}
if(a[x][y]=='l'&&y-1>0&&b[x][y-1]==0){
b[x][y-1]=1;
dfs(x,y-1);
b[x][y-1]=0;
}
if(a[x][y]=='r'&&y+1<=m&&b[x][y+1]==0){
b[x][y+1]=1;
dfs(x,y+1);
b[x][y+1]=0;
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)cin>>a[i][j];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
b[i][j]=1;
dfs(i,j);
e=0;
for(int k=1;k<=n;k++){
for(int l=1;l<=m;l++)b[k][l]=0;
}
}
}
cout<<cnt;
return 0;
}