A8046
2025-05-03 16:10:24
发布于:江苏
0阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int vis[2005][2005]={},n,m,x,y,bx[4]={1,0,-1,0},by[4]={0,1,0,-1},lx,ly,fx,fy;
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=='@'){
lx=i;
ly=j;
}
if(b=='*'){
fx=i;
fy=j;
}
}
}
vis[lx][ly]=0;
q.push(lx);
r.push(ly);
while(q.size()){
x=q.front();
y=r.front();
q.pop();
r.pop();
if(x==fx&&y==fy){
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;
}
这里空空如也
有帮助,赞一个