#ZDL102. 负权图最短路

负权图最短路

题目描述

输入数据给出一个有 n 个节点,m 条边的带权有向图。 判断从起点s开始的路径是否会抵达负环,如果能只输出一行 −1; 如果从起点s无法到达负环,或不存在负环,则输出起点s到达各点的最短路值,无法到达的点对应输出NoPath。

输入格式

第一行三个正整数,分别为点数 n,边数 m,起点s; 以下 m 行,每行三个整数 u,v,w,表示点 u到v 之间连有一条边,权值为 w。

输出格式

如果存在起点能到达的负权环,只输出一行 −1,否则按以下格式输出: 共 n 行,第 i 行描述 s 点到点 i 的最短路: 如果 S 与 i 不连通,输出 NoPath; 如果 i=S,输出 0。 其他情况输出 S 到 i 的最短路的长度。

5 4 1
1 2 1
3 4 -1
4 5 1
5 3 -2
0
1
NoPath
NoPath
NoPath

数据规模与约定

对于全部数据,2n1000,1m1052≤n≤1000,1≤m≤10^5,1u,v,sn,c1061≤u,v,s≤n,∣c∣≤10^6