rt,萌新不会BFS,代码错误求调
#include<bits/stdc++.h>
using namespace std;
const int dx[8] = { 1 , 1 , -1 , -1 , 2 , 2 , -2 , -2 } , dy[8] = { 2 , -2 , 2 , -2 , 1 , -1 , 1 , -1 };
int head , tail , n , t , begin_x , begin_y , end_x , end_y , que[300][2] , dis[300][300];
int main()
{
cin >> t;
while( t-- )
{
cin >> n >> begin_x >> begin_y >> end_x >> end_y;
head = tail = 0;
que[tail][0] = begin_x , que[tail++][1] = begin_y;
for( int i = 0 ; i < n ; ++i )
for( int j = 0 ; j < n ; ++j )
dis[i][j] = 1e8;
dis[begin_x][begin_y] = 0;
while( head < tail )
{
int x = que[head][0] , y = que[head++][1];
for( int i = 0 ; i < 8 ; ++i )
{
int tmp_x = dx[i] + x , tmp_y = dy[i] + y;
if( x >= 0 && x < n && y >= 0 && y < n )
{
dis[tmp_x][tmp_y] = dis[x][y] + 1;
que[tail][0] = tmp_x , que[tail++][1] = tmp_y;
}
}
}
cout << dis[end_x][end_y] << endl;
}
return 0;
}