1ms/3.44mb题解-普
2024-10-22 21:46:12
发布于:北京
1阅读
0回复
0点赞
算法:BFS
时间/内存:1ms/3.44mb
->100pts<-[保熟得嘞!]
#include<iostream>
#include<queue>
using namespace std;
struct node{
int x,y;
int step;
};
queue<node> q;
int dir[4][2]={
{1,0},
{0,1},
{-1,0},
{0,-1}
};
int vis[105][105];
char a[105][105];
int main(){
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];
}
}
for(int i=0;i<=n;i++){
for(int j=0;j<m;j++){
if(a[i][j]=='S'){
q.push({i,j,0});
vis[i][j]=1;
}
}
}
while(!q.empty()){
node r = q.front();
q.pop();
if(a[r.x][r.y]=='T'){
cout<<r.step<<endl;
return 0;
}
for(int i=0;i<4;i++){
int nx = r.x + dir[i][0];
int ny = r.y + dir[i][1];
if(nx<0||ny<0||nx>=n||ny>=m||vis[nx][ny]==1||a[nx][ny]=='#') continue;
vis[nx][ny]=1;
q.push({nx,ny,r.step+1});
}
}
cout<<-1;
return 0;
}
这里空空如也
有帮助,赞一个