A8035
2025-05-03 16:52:27
发布于:江苏
1阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int vis[105][105]={},n,m,ln,lm,fn,fm,x,y,bx[4]={1,0,-1,0},by[4]={0,1,0,-1};
char b;
queue<int>q,r;
int main(){
memset(vis,-1,sizeof(vis));
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>b;
if(b=='#'){
vis[i][j]=-2;
}else{
vis[i][j]=-1;
if(b=='S'){
ln=i;
lm=j;
}
if(b=='T'){
fn=i;
fm=j;
}
}
}
}
vis[ln][lm]=0;
q.push(ln);
r.push(lm);
while(q.size()){
x=q.front();
y=r.front();
q.pop();
r.pop();
if(x==fn&&y==fm){
cout<<vis[x][y];
return 0;
}
for(int i=0;i<4;i++){
if(vis[x+bx[i]][y+by[i]]==-1&&x>=1&&y>=1&&x<=n&&y<=m){
vis[x+bx[i]][y+by[i]]=vis[x][y]+1;
q.push(x+bx[i]);
r.push(y+by[i]);
}
}
}
cout<<-1;
return 0;
}
这里空空如也
有帮助,赞一个