private static void floyd() {
for (int k = 1; k <= n; k++) { //경유지
for (int i = 1; i <= n; i++) { //출발지
for (int j = 1; j <= n; j++) { //도착지
dist[i][j] = Math.min(dist[i][j], dist[i][k] + dist[k][j]);

k = 1 일 때, i -> j i -> 1 -> j 중 작은 값이 dist[i][j]에 저장
k = 2 일 때, k = 1 에서 i -> j가 선택되었을 때와 i -> 2 -> j 중 작은 값, i -> 1 -> j가 선택되었을 때와 i -> 1 -> 2 -> j 중 작은 값 저장

...

이잖아요 근데 만약 i -> 2 -> 1 -> j 일때가 최단 거리이면 못 찾아야 하는거 아닌가요?