플로이드-워셜
$1$부터 $N$까지 번호가 붙은 $N$개의 정점과 $M$개의 간선으로 이루어진 방향 그래프가 있다.
각 간선에는 양의 가중치가 있다.
모든 정점 쌍 $(i,j)$에 대해 $i$번 정점에서 $j$번 정점으로 가는 최단 거리를 구하라.
입력
첫 번째 줄에 정점의 개수 $N$과 간선의 개수 $M$이 주어진다. $(1 \leq N \leq 400, 0 \leq M \leq 100\,000)$
두 번째 줄부터 $M$개의 줄에 걸쳐 간선을 나타내는 세 정수 $u$, $v$, $w$가 주어진다. $(1 \leq u,v \leq N, u \neq v, 1 \leq w \leq 10^9)$
이는 $u$번 정점에서 $v$번 정점으로 가는 가중치가 $w$인 간선이 있다는 뜻이다.
같은 두 정점을 연결하는 방향 간선은 두 번 이상 주어지지 않는다.
출력
$N$개의 줄에 걸쳐 모든 정점 쌍 사이의 최단 거리를 출력한다.
$i$번째 줄의 $j$번째 값에는 $i$번 정점에서 $j$번 정점으로 가는 최단 거리를 출력한다.
도달할 수 없는 경우에는 INF를 출력한다.
각 정점에서 자기 자신으로 가는 최단 거리는 0이다.
예제 입력 1
5 7 1 2 4 1 3 10 2 3 2 2 4 7 3 4 1 4 5 3 5 2 5
예제 출력 1
0 4 6 7 10 INF 0 2 3 6 INF 9 0 1 4 INF 8 10 0 3 INF 5 7 8 0