我的家乡Rhyl拥有一个单向交通系统,该系统的设计旨在使人们尽可能长时间地远离目的地。您的任务(应该选择尝试)是生成一个程序,以给出通过此类交通系统的最短路线。
输入项
输入将是on STDIN
,并且将是一个起点和终点列表,后跟一个空行,然后是一个查询列表,如下所示:
A B
B A
B C
C D
D C
A D
C A
B A
每条道路只能沿给定的方向行进,因此,在上述示例中,道路A-B是双向道路,而B-C是从B到C的单向道路。从C到B被禁止。
起点和终点都将由一个大写字母表示。
输出量
对于收到的每个查询,输出应该是从给定起点到给定终点的最短路径(由访问的点数衡量)。如果没有这样的路由,则输出空白行。如果存在多个最短路径,则按字典顺序对所有最短路径进行排序时,输出第一个。
对于上面的示例,输出为:
A B C D
B A
测试脚本
和以前一样,我将基于Joey和Ventero编写的脚本为此任务提供测试:
并对无法使用上述脚本的任何人进行测试和预期输出
用法: ./test [your program and its arguments]
奖赏
很显然,所有尝试打高尔夫球的答案都符合规格要求,并且通过了所有测试,这些答案都将使我感到欣慰。到2012年1月26日的最短工作答案将被接受。
@GigaWatt是的,是的。
—
Gareth 2012年
@PeterTaylor为什么在问题沙盒中不提出该问题?你有什么建议?我可以删除它,而没有答案,我想吗?
—
Gareth 2012年
@Gareth,因为这一次使meta上的几个线程同时处于活动状态,而且我没有注意到问题沙箱中有新的答复。删除是一种可能。或者您可以扩展它以增加边缘的权重-我们还没有直接的Dijkstra问题。
—
彼得·泰勒
output the first when sorting all shortest routes lexicographically
-因此,如果A B D
和A C D
都是有效的解决方案,请A B D
改为输出?