记录编号 |
550656 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO Dec07] 泥潭 |
最终得分 |
100 |
用户昵称 |
U.N.A |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.072 s |
提交时间 |
2020-03-13 20:22:48 |
内存使用 |
34.84 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define s freopen("mud.in","r",stdin)
#define ss freopen("mud.out","w",stdout)
#define sss fclose(stdin)
#define ssss fclose(stdout)
#define mint int// long
#define pd if(nx<=maxx && ny<=maxx && nx>=0 && ny>=0 && !mp[nx][ny])
mint mp[1010][1010];
mint rock,ax,ay;
mint maxx=1010;
mint hd,tl;
mint dx[]={0,0,0,1,-1};
mint dy[]={0,1,-1,0,0};
struct u{
mint x,y;
mint step;
}que[1511000];
void bfs(){
que[hd]=(u){500,500,0};
mp[que[hd].x][que[hd].y]=true;
while(hd<=tl){
u tic=que[hd];
if(tic.x==ax && tic.y==ay){
cout<<tic.step;
return;
}
for(mint i=1;i<=4;i++){
tic=que[hd];
mint nx=tic.x+dx[i];
mint ny=tic.y+dy[i];
pd{
mp[nx][ny]=true;
tic.x=nx;
tic.y=ny;
tic.step++;
// cout<<que[hd].x<<" "<<que[hd].y<<" "<<tic.x<<" "<<tic.y<<" "<<tic.step<<endl;
tl++;
que[tl]=tic;
if(tic.x==ax && tic.y==ay){
cout<<tic.step;
return;
}
}
}
hd++;
}
cout<<-1;
return;
}
int main(){
s;
ss;
cin>>ax>>ay>>rock;
ax+=500;
ay+=500;
for(mint i=1;i<=rock;i++){
mint pp,p;
cin>>p>>pp;
p+=500;
pp+=500;
mp[p][pp]=true;
}
//cout<<ax<<" "<<ay<<endl;
bfs();
sss;
ssss;
return 0;
}