YbtOJ 廣度搜索課堂過關 例1 走迷宮【bfs】
阿新 • • 發佈:2021-01-09
技術標籤:YbtOJ專項練習題題解bfsbfsYbtoj題解
思路
這道題是一道廣搜模板題。
廣搜都快忘了怎麼打了,打完這道題之後重拾一些了。
C o d e Code Code
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int dx[5]={0,1,0,0,-1};
int dy[5]={0,0,1,-1,0};
int f[1010000][5],v[1010][1010];
int n,a[1010][1010];
int sx,sy,tx,ty;
int q[1000010];
int bfs()
{
int hd=0,tl=1;
f[1][0]=0;
f[1][1]=sx;
f[1][2]=sy;
v[sx][sy]=1;
while(hd<tl)
{
hd++;
for(int i=1; i<=4; i++)
{
int xx=f[hd][1]+dx[i];
int yy=f[hd][2]+dy[i];
if(a[xx][yy]==0&&xx>=1&&xx<=n&&yy>=1&&yy<=n&&v[xx] [yy]==0)
{
tl++;
v[xx][yy]=1;
f[tl][0]=f[hd][0]+1;
f[tl][1]=xx;
f[tl][2]=yy;
if(xx==tx&&yy==ty)
{
cout<<f[tl][0];
return 0;
}
}
}
}
}
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
for(int j=1 ; j<=n; j++)
scanf("%1d",&a[i][j]);
scanf("%d%d%d%d",&sx,&sy,&tx,&ty);
bfs();
return 0;
}