#P1122. FDNY to the Rescue!

FDNY to the Rescue!

题目描述(Description)

纽约市消防局(FDNY)一直以其快速的火灾响应时间而自豪。为了进一步提升响应速度,他们希望派遣系统能够实时掌握每个地址距离最近的消防站。

你被聘请来开发这套系统软件。该软件的功能是:

输入火灾发生的地址、城市街道的路口(即交叉点)、各交叉点之间的通行时间;

输出每个消防站到该火灾地点所需的最短时间;

输出该消防站到火灾地点的最短路径;

所有消防站将按到达时间从短到长排序,以便调度员选择距离最近的可用消防站进行出动。

输入格式(Input)

11 行: 一个整数 NN,表示城市中有多少个交叉点(编号从 11NN),N<20N < 20

22 到第 N+1N+1 行: 一个 N×NN \times N 的邻接矩阵,表示每两个交叉点之间所需的时间(单位:分钟)。

值为 1-1 表示这两个交叉点之间没有直接道路;

其余值均为非负整数;

ii 行第 jj 列表示从交叉点 ii 到交叉点 jj 所需的时间;

对角线上的值为 00(即自己到自己);

输入保证任意一个消防站都一定能到达火灾现场。

N+2N+2 行: 一个或多个整数:

第一个整数表示火灾发生地对应的交叉点编号;

接下来的若干个整数表示各个消防站所在的交叉点编号。

输出格式(Output)

第一行输出列标题(用制表符 \t 分隔):

Org Dest Time Path 接下来的每一行输出一个消防站到火灾现场的最短路径信息,格式如下:

起点 终点 所需时间 完整路径(节点编号)

输出要求说明:

所有字段使用制表符 \t 分隔;

所有消防站按耗时升序排列;

若有多个消防站耗时相同,则顺序不限;

若存在多条耗时相同的最短路径,可任选一条输出;

若起点与终点为同一交叉点,时间为 00,路径仅输出一个点。

6 
0  3  4 -1 -1 -1 
-1 0  4  5 -1 -1 
2  3  0 -1 -1  2 
8  9  5  0  1 -1 
7  2  1 -1  0 -1 
5 -1  4  5  4  0 
2  4  5  6
In the above input the last line

说明:

总共有 66 个交叉点;

最后一行代表火灾地点在交叉点 22,消防站在交叉点 445566

Org	Dest	Time	Path
5	2	2	5	2
4	2	3	4	5	2
6	2	6	6	5	2```