1. 플로이드 워셜 - 임의의 한 지점에서 다른 임의의 지점까지의 최단 거리를 구하는 알고리즘 (모든 지점에 대해 구할 수 있음: dist[V][V]) - 중간 지점을 통해서 최단거리를 갱신하는 알고리즘 - O(N^3)의 시간 복잡도: 3중 for문 - 사용가능한 시점: 시간 초과 제한에 걸리지 않을 때( 정점의 수가 약 500개 이하정도) - 다이나믹 프로그래밍 사용 : dist[i][j] = i에서 j 로 가는 거리라고 할 때, i -j의 최단경로가 i-k-j라면 i-k와 k-j도 최단경로이다. 점화식: dist[i][j](최단) = dist[i][k] + dist[k][j] - code for k