#include #include #include using namespace std; //bfs easy struct Node { int x; int y; int steps; Node(int a,int b,int c):x(a),y(b),steps(c) {} }; bool vis[305][305]; int dis[8][2] = {{-1,2},{1,2},{2,1},{2,-1},{1,-2},{-1,-2},{-2,-1},{-2,1}}; void bfs(int sx,int sy,int ex,int ey,int n) { int ans = 0; int x,y; queueq; q.push(Node(sx,sy,0)); vis[sx][sy] = true; while(!q.empty()) { Node now = q.front(); q.pop(); if(now.x==ex&&now.y==ey) { printf("%d\n",now.steps); return; } for(int i = 0; i<8; ++i) { x = now.x + dis[i][0]; y = now.y + dis[i][1]; if(x=0&&y=0&&!vis[x][y]) { q.push(Node(x,y,now.steps+1)); vis[x][y] = true; } } } } int main() { int n,ans; scanf("%d",&n); while(n--) { memset(vis,0,sizeof(vis)); int l,x1,y1,x2,y2; scanf("%d",&l); scanf("%d%d",&x1,&y1); scanf("%d%d",&x2,&y2); bfs(x1,y1,x2,y2,l); } return 0; }