그래프의 모든 최단 경로를 구하는 알고리즘
(노드 i ~ 노드 j)의 최단 거리 :
graph[i][j] = Math.min(graph[i][j], graph[i][k]+graph[k][j]);
-> 경유할 수 있는 새로운 노드 k를 선택하고, 더 짧은 길이를 선택하여 줄이는 과정을 반복한다.

// graph : 2차원 인접 행렬, n = 노드의 개수
public static void floyd(int[][] graph, int n) {
for (int k = 1; k <= n; k++) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
graph[i][j] = Math.min(graph[i][j], graph[i][k]+graph[k][j]);
}
}
}
}