记录编号 550656 评测结果 AAAAAAAAAA
题目名称 [USACO Dec07] 泥潭 最终得分 100
用户昵称 GravatarU.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;
}