#include<bits/stdc++.h>
using namespace std;
int n,m,z,c,v[101][101],l,k;;
char a;
int dx[]={0,1,0,-1},
dy[]={1,0,-1,0};
struct node{
int x,y,s;
}p[10001];
void bfs(int x,int y){
int h=0,t=1,xx,yy;
p[t].x=x;
p[t].y=y;
p[t].s=0;
while(h<t){
h++;
for (int i=0;i<4;i++){
xx=p[h].x+dx[i];
yy=p[h].y+dy[i];
if (xx>=0&&yy>=0&&xx<n&&yy<m&&!v[xx][yy]){
t++;
p[t].x=xx;
p[t].y=yy;
v[xx][yy]=1;
p[t].s=p[h].s+1;
if (xx==z&&yy==c){
cout<<p[t].s;
return ;
}
}
}
}
}
int main(){
cin>>n>>m;
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
cin>>a;
if (a=='S'){
v[i][j]=1;
l=i;
k=j;
}
if (a=='T'){
v[i][j]=0;
z=i;
c=j;
}
if (a=='#'){
v[i][j]=1;
}
}
}
bfs(l,k);
}
1254:走出迷宫
于 2023-03-15 17:01:08 首次发布