#CF1681E. 迷宫冒险
迷宫冒险
E. 迷宫冒险
时间限制:6 秒
内存限制:512 兆字节
你找到了一张形状奇特的迷宫地图。这张地图是一个网格,包含 行和 列。网格的行从下到上编号为 到 ,列从左到右编号为 到 。
迷宫有 层。第一层是左下角的格子(单元格 )。第二层由所有与第一层相邻(包括边相邻或角相邻)且在网格内的格子组成。第三层由所有与第二层相邻(包括边相邻或角相邻)且在网格内的格子组成,以此类推。
例如,有 层的迷宫形状如下图所示:
(图片省略,原文有图)
各层之间用墙隔开,但墙上有门。
除了第 层外,每一层到下一层恰好有两个门。一个门设在当前层的顶部墙上,另一个门设在当前层的右侧墙上。对于第 层到第 层,你都会得到这两个门的坐标。门可以双向通行:既可以从第 层到第 层,也可以从第 层到第 层。
如果你站在某个格子中,你可以移动到边相邻的格子,前提是墙没有阻挡你的移动(例如,如果两个格子之间没有门,你就不能从一层移动到另一层)。
现在你有 个询问,形式如下:从格子 到格子 最少需要移动多少步。
输入格式
第一行包含一个整数 ()——迷宫的层数。
接下来的 行中,第 行包含四个整数 ()——两个门的坐标。这两个格子都在第 层。第一个格子与第 层的顶部墙边相邻,那个边就是门所在的位置。第二个格子与第 层的右侧墙边相邻,那个边就是门所在的位置。
接下来一行包含一个整数 ()——询问的数量。
接下来的 行中,第 行包含四个整数 ()——询问中两个格子的坐标。
输出格式
对于每个询问,输出一个整数——从 到 最少需要移动的步数。
样例输入 #1
2
1 1 1 1
10
1 1 1 1
1 1 1 2
1 1 2 1
1 1 2 2
1 2 1 2
1 2 2 1
1 2 2 2
2 1 2 1
2 1 2 2
2 2 2 2
样例输出 #1
0
1
1
2
0
2
1
0
1
0
样例输入 #2
4
1 1 1 1
2 1 2 2
3 2 1 3
5
2 4 4 3
4 4 3 3
1 2 3 3
2 2 4 4
1 4 2 3
样例输出 #2
3
4
3
6
2