广搜题解
2025-01-15 15:37:32
发布于:广东
5阅读
0回复
0点赞
#include<iostream>
#include<queue>
using namespace std;
int n,m,vis[2005][2005],f;
int sx,sy,ex,ey;
char a[2005][2005];
struct node{
int x,y,s;
}l,r;
queue<node> que;
int x1[8]={0,0,1,-1};
int y1[8]={1,-1,0,0};
void bfs(){
while(que.size()){
l=que.front();
que.pop();
if(l.x==ex and l.y==ey){
cout<<l.s;
f=1;
return ;
}
for(int i=0;i<4;i++){
r.x=l.x+x1[i];
r.y=l.y+y1[i];
if(r.x>=1&&r.x<=n&&r.y>=1&&r.y<=m&&a[r.x][r.y]!='#'&&vis[r.x][r.y]==0){
r.s=l.s+1;
que.push(r);
vis[r.x][r.y]=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]=='@'){
sx=i;
sy=j;
}
if(a[i][j]=='*'){
ex=i;
ey=j;
}
}
}
que.push({sx,sy,0});
vis[sx][sy]=1;
bfs();
if(f==0){
cout<<-1;
}
}
全部评论 1
666
昨天 来自 广东
0
有帮助,赞一个