#include <bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int n,m,ans=1000000;
char mp[N][N];
bool f[N][N],flag=0;
int dx[]={0,-1,1,0,0};
int dy[]={0,0,0,-1,1};
void dfs(int i,int j,int step) {
if(mp[i][j]=='#') {
flag=1;
ans=min(step,ans);
return;
}
for(int k=1;k<=4;k++) {
int ni=i+dx[k];
int nj=j+dy[k];
if(ni<1||ni>n||nj<1||nj>m||mp[ni][nj]=='X'||f[ni][nj]) continue;
f[ni][nj]=1;
dfs(ni,nj,step+1);
f[ni][nj]=0;
}
}
int main() {
cin >> n >> m;
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
cin >> mp[i][j];
}
}
f[1][1]=1;
dfs(1,1,0);
if(flag) cout << ans << endl;
else cout << -1 << endl;
}
问这段代码为什么会TLE