管道负压检测

普及⏱ 1000ms💾 256MB#P5179🏷️ SPFA图论最短路负环

题目描述

一张 $N$ 节点 $M$ 条有向管道的输水网,管道有压降 $c$(可为负值,表示增压泵)。 从源点 $S$ 沿管道可正向流动。若网络中存在一条流动路径回到自身且沿途压降总和小于 $0$, 则该网络存在"负压环",系统不稳定,需输出 $-1$; 否则输出 $S$ 到每个节点的最小累计压降:与 $S$ 不连通的输出 $NoPath$,$S$ 自身输出 $0$。

输入格式

第一行三个整数 $N, M, S$。 接下来 $M$ 行每行三个整数 $a, b, c$:一条从 $a$ 到 $b$、压降 $c$ 的管道。

输出格式

无负压环时输出 $N$ 行:第 $i$ 行为 $S$ 到 $i$ 的最小累计压降(不连通输出 $NoPath$,$i=S$ 输出 $0$); 存在负压环时仅输出一行 $-1$。

数据范围

None

样例输入 #1
3 3 1
1 2 1
2 3 1
3 1 -5
样例输出 #1
-1
样例输入 #2
3 2 1
1 2 1
1 3 2
样例输出 #2
0
1
2