bfs ,没啥好说的
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#define N 1005
using namespace std;
int n,l;
int vis[305][305];
int dis[8][2]={2,1,1,2,-1,2,-2,1,2,-1,1,-2,-1,-2,-2,-1};
struct node
{
int x,y;
int dis;
};
void bfs(int x,int y)
{
queue<node > q;
node start,next;
start.dis= 0;
start.x= x;
start.y= y;
q.push(start);
while(!q.empty())
{
start=q.front();
q.pop();
for(int i=0;i<8;i++)
{
next.x=start.x+dis[i][0];
next.y=start.y+dis[i][1];
if(next.x>=0 && next.x<l&& next.y>=0 && next.y<l && -1==vis[next.x][next.y])
{
vis[next.x][next.y]=start.dis+1;
next.dis=start.dis+1;
q.push(next);
}
}
}
}
int main()
{
cin>>n;
int rx,ry,ex,ey;
while(n--)
{
cin>>l;
cin>>rx>>ry>>ex>>ey;
memset(vis,-1,sizeof(vis));
vis[rx][ry]=0;
bfs(rx,ry);
cout<<vis[ex][ey]<<endl;
}
}