#include <bits/stdc++.h>
using namespace std;
int dx[]={0,1,-0,-1};
int dy[]={1,0,-1,-1};
char mp[505][505];
bool vis[505][505];
int ex,ey;
int ans=-1;
int n,m;
void dfs(int nx,int ny,int step){
vis[nx][ny]=1;
if(nx==ex&&ny==ey){
ans=min(ans,step);
return ;
}
for(int i=0;i<4;i++){
int px=nx+dx[i];
int py=ny+dy[i];
if(vis[px][py]) continue;
if(mp[px][py]=='#') continue;
if(px<0||px>=n||py<0||py>=m) continue;
dfs(px,py,step+1);
}
}
int main(){
cin>>n>>m;
int x=0,y=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>mp[i][j];
if(mp[i][j]=='S'){
x=i;
y=j;
}
if(mp[i][j]=='T'){
ex=i;
ey=j;
}
}
}
dfs(x,y,0);
cout<<ans;
return 0;
}
数据 3 3
S..
##.
.T.
输出-1 应为 5
玄2管