#P1792. Hexagonal Routes
Hexagonal Routes
本题没有可用的提交语言。
描述
寻找最短路径是卡车司机的典型任务。如果卡车通过最短路径行驶,就能节省费用。了解相同长度的替代路径也很重要,以防某条路径无法通行,例如由于道路施工。
为了描述一个区域,我们需要建立其地图模型。ACM最近发现基于三角形和矩形的模型不足,决定使用六边形来描述地图。给定一个规则的六边形网格(类似于蜂巢),我们可以从任意一个单元格开始编号为1,然后以螺旋方式依次为其他单元格编号。这样,每个单元格都有唯一的编号,反之,每个正整数也对应一个唯一的单元格。
如果两个单元格共享一条边,则称它们为相邻。在无限结构中,每个单元格恰好有六个邻居。例如,编号为2的单元格与单元格1、3、7、8、9和10相邻。六边形路径是指一个非空的单元格序列,其中序列中的每个单元格(除了最后一个)与其后继单元格相邻。两个单元格和之间的六边形路径是指以为序列第一个成员、为最后一个成员的六边形路径。路径的长度是序列中单元格数减一,表示我们沿该路径行走所需的步数。
你的任务是确定两个单元格之间最短路径的长度,以及该长度的所有不同路径的总数。不同的路径必须在至少一个序列成员上有所不同,即它们不需要是完全不重叠的序列。
输入
输入由一系列任务组成,每个任务单独占一行。每行包含两个整数和,用空格分隔,,且。这些数字表示两个不同的单元格。最后一个任务后跟着一行两个零,表示输入结束。
输出
对于每个任务,输出句子“There are N routes of the shortest length L.”。将替换为和之间最短路径的最小可能长度,将替换为该长度的不同路径数量。如果只有一条路径,则使用“is”和“route”代替“are”和“routes”。
示例输入
1 2
1 7
1 8
1 19
7 12
1000 9000
0 0
示例输出
There is 1 route of the shortest length 1.
There is 1 route of the shortest length 1.
There are 2 routes of the shortest length 2.
There is 1 route of the shortest length 2.
There are 3 routes of the shortest length 3.
There are 278940769844931007968 routes of the shortest length 73.
来源
CTU Open 2003