问题4144--打飞机

4144: 打飞机

[命题人 : ]
时间限制 : 1.000 sec  内存限制 : 128 MB

题目描述

A现在要开始一场国际旅行了。既然是国际旅行,就要打飞机才能到目的地。小A想要尽快的到达目的地,他想请你帮忙,写一个程序,计算出最快的飞机路线。

A也给出了一些注意点,以帮助你写程序

1、不同的机场可能处于不同的时区。

2、每一个机场都有一个航班表,这个表规定了每一个般班目的地、起飞时间,飞行时间;航班表是按照天为周期来执行的。

3、登机是需要花费时间的,每一个机场的登机的时间可能不一样。

4、所有的机场的名字是由不超过20个字符(这些字符只能是字母或者数字,或者下划线)组成的一个串,没有两个机场的名字是相同的。

5、航班名称是由不超过5个字符(这些字符只能是字母或者数字,或者下划线)组成的。没有两个航班的名字是一样的。

6、机场名称各航班名称是区分大小写的。

7、所有的时间格式是hh::mm,其中hhmm是由数字字符组成的,分别代表小时和分钟;如果没有特殊说明,表示的是本地时间。

输入

 1 行包含出发机场名字和目的机场的名字,还有出发时间,他们以空格分开。出发时间是指小A到达出发机场的时间。

2行包含一个N2 <= N <= 100),代表机场的个数.

接下来开始给出每一个机场的具体信息。每一个机场第1行包括机场名字,机场所在时区,登机时间和一个整数M,他们以空格分开。机场所在时区是当地时间和格林威治时间的差,他的格式是shh:mm,s是时区的符号,要么是’+’,要么是’-’.登机时间指在该机场登机或者换乘所要的时间。M0 <= M <= 300)表示的是该机场的航班数目.

接下来M行给出该机场各航班的信息。每一行包括航班名称,目的地机场名称,起飞时间,飞行时间,他们以空格分开。飞行时间是指从起飞到降落所要的时间。

题目保证所有的给出的数据有且仅有一个最优解。

输出

 1行输出最小的总的旅行时间,即从小A到达出发机场到小A到达目的机场所经过的时间,时间格式为d:hh:mm,d是指天数(题目保证d <= 9)。

2行输出小A到达目的地机场时,当地时间。

接下来每一行列出小A分别搭乘了哪些航班,按照时间先后顺序给出。(题目保证答案唯一

样例输入 Copy

AoDill HK 11:15
3
AoDill +03:00  01:30 2
AB123  JaFunia  12:10 04:25
F9973  JaFunia  18:25 04:30
JaFunia  +00:00  00:45 3
BB171  HK 09:20 08:10
VK993  AoDill 14:45 04:20
V7811  AoDill 21:30 04:25
HK -05:00  00:45 1
FF154  JaFunia  14:25 08:05

样例输出 Copy

1:09:15
12:30
F9973
BB171

提示

 AoDill 处于+03:00时区,所以AoDill当地时间是11:15的时候,格林威治时间即+00:00时区的时间是11:15-03:00=08:15

来源/分类