这是黄题?
2026-02-23 23:43:30
发布于:广东
//测试点也很水
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=110;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
int n,m;
char M[maxn][maxn];
int nx,ny;
int vis[maxn][maxn];
int dis[maxn][maxn];
struct node{
int x,y;
}now;
void bfs(int x,int y){
queue<node>q;
q.push({x,y});
dis[x][y]=0;
vis[x][y]=1;
while(!q.empty()){
now=q.front();
q.pop();
if(M[now.x][now.y]=='T'){
printf("%lld",dis[now.x][now.y]);
return;
}
for(int i=0;i<4;i++){
int ax=now.x+dx[i];
int ay=now.y+dy[i];
if(ax>=1&&ax<=n&&ay>=1&&ay<=m&&M[ax][ay]!='#'&&vis[ax][ay]0){
q.push({ax,ay});
vis[ax][ay]=1;
dis[ax][ay]=dis[now.x][now.y]+1;
}
}
}
puts("-1");
}
signed main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>M[i][j];
if(M[i][j]'S')nx=i,ny=j;
}
}
bfs(nx,ny);
return 0;
}
这里空空如也


有帮助,赞一个