You are given a graph with vertices and edges. Each edge is a directed edge from vertex to vertex with weight . You are asked to find the shortest path between all pairs of vertices. The graph may contain multiple edges between any pair of vertices, as well as self-loops. There may also be negative edge weights. It is not guaranteed that the graph is connected.
Constraints
For all subtasks:
Subtask 1 [10%]
Subtask 2 [10%]
Subtask 3 [80%]
Input Specification
The first line contains 2 integers and , subject to the constraints above.
The next lines describe the edges of the graph. Each line contains 3 integers, , , , indicating a directed edge from vertex to vertex with weight , subject to the constraints above.
Output Specification
This problem is graded with an identical
checker. This includes whitespace characters. Ensure that every line of output is terminated with a \n
character.
The output consists of lines, each with space separated integers. Each line should end with a new line character. Integer on line contains the distance of the shortest path from vertex to vertex .
If there is no path from to , INF
should be printed instead of an integer.
If there is no lower bound on the length of the shortest path from to (or equivalently, there is a path from to that contains a negative edge cycle), -INF
should be printed instead of an integer.
A negative edge cycle is a path that starts and ends on the same vertex, and the sum of the weights of those edges on that path is less than .
Sample Input 1
5 4
1 2 9
1 4 8
2 4 2
3 5 4
Sample Output 1
0 9 INF 8 INF
INF 0 INF 2 INF
INF INF 0 INF 4
INF INF INF 0 INF
INF INF INF INF 0
Sample Input 2
6 6
1 2 2
1 3 4
2 3 -10
3 5 1
5 6 2
6 5 -5
Sample Output 2
0 2 -8 INF -INF -INF
INF 0 -10 INF -INF -INF
INF INF 0 INF -INF -INF
INF INF INF 0 INF INF
INF INF INF INF -INF -INF
INF INF INF INF -INF -INF
Comments
I need hints.
Floyd-Warshall passes, which is probably not intended.
Time limits have been adjusted.