提交时间:2025-11-02 09:56:18

运行 ID: 359398

#include<bits/stdc++.h> using namespace std; char a[50][50]; int n,m,d[50][50],qx,qy,zx,zy; int dx[5]={0,0,1,0,-1}; int dy[5]={0,1,0,-1,0}; void wsb(int x,int y,int k){ d[x][y]=k; int tx,ty; for(int i=1;i<=4;i++){ tx=x+dx[i]; ty=y+dy[i]; if(tx==zx&&ty==zy&&k<d[tx][ty]){ d[tx][ty]=k; return; } else if(a[tx][ty]=='.'&&k+1<d[tx][ty]){ wsb(tx,ty,k+1); } } } int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; if(a[i][j]=='S'){ qx=i; qy=j; } if(a[i][j]=='T'){ zx=i; zy=j; } d[i][j]=2e9; } } wsb(qx,qy,1); cout<<d[zx][zy]; return 0; }