T2
2026-10-05 11:42:04
发布于:浙江
#include <bits/stdc++.h>
using namespace std;
const int N=1010;
int n,ex,ey;
bool vis[N][N];
int d[N][N];
char g[N][N];
int dx[6]={1,0,-1,1,-1,0},dy[6]={1,1,1,0,0,-1};
int del=400;
void bfs(){
memset(d,-1,sizeof d);
queue<pair<int,int>>q;
q.push({del,del});
vis[del][del]=true;
d[del][del]=0;
while(!q.empty()){
auto t=q.front();
int x=t.first,y=t.second;
q.pop();
for(int i=0;i<6;i++){
int nx=x+dx[i];
int ny=y+dy[i];
if(nx<1||ny<1||nx>N-10||ny>N-10||vis[nx][ny]) continue;
q.push({nx,ny});
vis[nx][ny]=true;
d[nx][ny]=d[x][y]+1;
}
}
}
int main(){
cin>>n>>ex>>ey;
ex+=del,ey+=del;
for(int i=1;i<=n;i++){
int x,y;cin>>x>>y;
x+=del,y+=del;
vis[x][y]=true;
}
bfs();
cout<<d[ex][ey];
return 0;
}
这里空空如也


















有帮助,赞一个