/* 小水题当个模版 */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <iostream> #include <algorithm> using namespace std; #include <queue> #include <stack> #include <vector> #include <map> #include <set> #define M 1000 //修改点:数据大小 //修改点:结构体内容 struct node { int x,y; int step; }; struct node front,rear; //修改点:行走方式 int xx[8]={-2,-1,1,2,2,1,-1,-2}; int yy[8]={1,2,2,1,-1,-2,-2,-1}; bool visit[M][M]; int n,ansx,ansy; queue<node>q; int BFS(int x,int y) { if(x==ansx&&y==ansy) return 0; int dx,dy,i; front.x=x,front.y=y,front.step=0; q.push(front); visit[x][y]=true; while(!q.empty()) { front=q.front(); q.pop(); for(i=0;i<8;i++) { dx=front.x+xx[i],dy=front.y+yy[i]; if(dx>=0&&dx<n&&dy>=0&&dy<n&&!visit[dx][dy]) { visit[dx][dy]=true; if(dx==ansx&&dy==ansy) return front.step+1; rear.x=dx,rear.y=dy,rear.step=front.step+1; q.push(rear); } } } } int main() { int t,x,y,ans; scanf("%d",&t); while(t--) { while(!q.empty()) q.pop(); memset(visit,false,sizeof(visit)); scanf("%d",&n); scanf("%d%d",&x,&y); scanf("%d%d",&ansx,&ansy); ans=BFS(x,y); printf("%d ",ans); } return 0; }