585960# from typing import Union61# '''Return min dist s.t. dist[a][b] -> a to b. / O(|n|^3)'''62# def warshall_floyd(G: list[list[tuple[int, int]]], INF: Union[int, float]=float('inf')) -> list[list[Union[int, float]]]:63# n = len(G)64# # dist = [dijkstra(G, s, INF) for s in range(n)]65# dist = [[INF]*n for _ in range(n)]66# for v in range(n):67# for x, c in G[v]:68# dist[v][x] = c69# dist[v][v] = 070# for k in range(n):71# for i in range(n):72# if dist[i][k] == INF: continue73# for j in range(n):74# if dist[i][j] > dist[i][k] + dist[k][j]:75# dist[i][j] = dist[i][k] + dist[k][j]76# # elif dist[i][j] == dist[i][k] + dist[k][j]:77# # dist[i][j] = dist[i][k] + dist[k][j]78# '''79# for i in range(n):80# if dist[i][i] < 0:81# return 'NEGATIVE CYCLE'82# '''83# return dist