#P1915. Knight Moves

    ID: 916 传统题 1000ms 256MiB 尝试: 5 已通过: 1 难度: 8 上传者: 标签>搜索TUD Programming Contest 2001DarmstadtGermany

Knight Moves

描述描述

背景
索穆罗洛夫先生无疑是一位卓越的国际象棋玩家,他断言无人能像他一样快速将骑士(马)从一个位置移动到另一个位置。你能战胜他吗?

问题
你的任务是编写一个程序,计算骑士从起始位置到达目标位置的最少移动次数,从而获得比索穆罗洛夫更快的机会。

对于不熟悉国际象棋的人,骑士的可能移动方式如图1所示(注:骑士走"日"字,即横向两格纵向一格或纵向两格横向一格的L型移动)。

输入输入
输入的第一行是一个整数nn,表示测试用例的数量。

接下来有nn个测试用例,每个测试用例包含三行整数:

  • 第一行给出棋盘的边长ll4l3004 \leq l \leq 300),棋盘大小为l×ll \times l
  • 第二行和第三行分别是两个整数对{0,,l1}×{0,,l1}\{0, \dots, l-1\} \times \{0, \dots, l-1\},表示骑士的起始位置和目标位置,整数间用单个空格分隔。保证这些位置在对应棋盘上有效。

输出输出
对于每个测试用例,计算骑士从起始位置到目标位置的最少移动次数。若起始与目标位置相同,移动次数为00。结果需单独一行输出。

输入数据

3
8
0 0
7 0
100
0 0
30 50
10
1 1
1 1

输出数据

5
28
0