#P972. 最短路径

最短路径

题目描述

在带权有向图 GG 中,给定一个源点 vv,求从 vvGG 中的其余各顶点的最短路径问题,叫做单源点的最短路径问题。迪杰斯特拉算法是常用的一种,按照路径长度递增的次序产生最短路径。

在本题中,读入一个有向图的带权邻接矩阵,建立有向图并按照上述算法求出源点至每一个其它顶点的最短路径长度。

输入格式

第一行包含两个正整数 nnss,表示图中共有 nn 个顶点,且源点为 ss

接下来的 nn 行,每行包含 nn 个用空格隔开的整数。对于第 ii 行的第 jj 个整数:

  • 若大于 00,则表示第 ii 个顶点有指向第 jj 个顶点的有向边,且权值为该整数值;
  • 若为 00,则表示没有从 ii 指向 jj 的有向边。

i=ji=j 时,该整数保证为 00

输出格式

输出一行,包含 n1n-1 个整数,按照顶点编号从小到大的顺序,依次输出源点到除源点外每个顶点的最短路径长度。如果不存在从源点至相应顶点的路径,则输出 1-1

整数之间用一个空格隔开,行末无多余空格,结尾有换行。

样例

4 2
0 3 0 1
0 0 4 0
2 0 0 0
0 0 1 0
6 4 7

数据范围

2n502\le n\le 50

2sn2\le s\le n

权值为整数,满足 00\le 权值 100\le 100

来源

最短路径