1421: 【模板】Johnson 全源最短路

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:1 Solved:0

Description

给定一个包含 n 个结点和 m 条带权边的有向图,求所有点对间的最短路径长度,一条路径的长度定义为这条路径上所有边的权值和。

注意: 边权可能为负,且图中可能存在重边和自环; 

Input

第 1 行: 2 个整数 n,m,表示给定有向图的结点数量和有向边数量。

接下来 行:每行 3 个整数 u,v,w,表示有一条权值为 w 的有向边从编号为 u 的结点连向编号为 v 的结点。

Output

若图中存在负环,输出仅一行 -1 。
若图中不存在负环:
输出 n 行:令 disi,j为从 i 到 j 的最短路,在第 i 行输出 ,注意这个结果可能超过 int 存储范围。
如果不存在从 到 j 的路径,则 disi,j = 10^9 ; 如果 i=j,则 disi,j = 0。

Sample Input Copy

5 7
1 2 4
1 4 10
2 3 7
4 5 3
4 2 -2
3 4 -3
5 3 4

Sample Output Copy

128
1000000072
999999978
1000000026
1000000014

HINT



输入 #2
5 5
1 2 4
3 4 9
3 4 -3
4 5 3
5 3 -2
输出 #2
-1

【样例解释】

左图为样例 11 给出的有向图,最短路构成的答案矩阵为:













 
0 4 11 8 11 
1000000000 0 7 4 7 
1000000000 -5 0 -3 0 
1000000000 -2 5 0 3 
1000000000 -1 4 1 0 

右图为样例 22 给出的有向图,红色标注的边构成了负环,注意给出的图不一定连通。


【数据范围】

对于 100\%100% 的数据,

对于 20\%20% 的数据,,不存在负环(可用于验证 Floyd 正确性)

对于另外 20\%20% 的数据,(可用于验证 Dijkstra 正确性)