floyd-warshall
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYnVjG%2FbtrAsjDG46U%2FbcJTvQANrPhST2kL5M9TDK%2Fimg.png)
Floyd-Warshall Algorithm (최단경로)
이 알고리즘은 플로이드 알고리즘, 로이-워셜 알고리즘, 로이-플로이드 알고리즘, 또는 WFI 알고리즘으로 알려져 있다. 알고리즘 Floyd-Warshall 알고리즘은 그래프에서 지날 수 있는 모든 경로를 비교한다. 시간 복잡도는 O(n^3)으로, 코드로 짜면 3중의 중첩 반복문을 가진다. 노드i에서 노드j까지 가는 방법은 2가지 중 하나일 것이다. (중간에 k란 노드가 있다고 하자) i에서 바로 j로 가는 경우 i에서 k를 거쳐 j로 가는 경우 위 2가지의 경우의 수 중에서 최단경로가 결국 우리가 구하고자 하는 값이 된다. 따라서 아래와 같이 나타낼 수 있다. floyd(i,j,k) = min(i에서 j로 가는 최단거리, i에서 k로 가는 최단거리 + k에서 j로 가는 최단거리) 코드로 나타내면 아래와같..
백준 / 최단경로 - Floyd Warshall / 11403번 / 경로 찾기 / JS
문제 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정점의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄부터 N개 줄에는 그래프의 인접 행렬이 주어진다. i번째 줄의 j번째 숫자가 1인 경우에는 i에서 j로 가는 간선이 존재한다는 뜻이고, 0인 경우는 없다는 뜻이다. i번째 줄의 i번째 숫자는 항상 0이다. 출력 총 N개의 줄에 걸쳐서 문제의 정답을 인접행렬 형식으로 출력한다. 정점 i에서 j로 가는 경로가 있으면 i번째 줄의 j번째 숫자를 1로, 없으면 0으로 출력해야 한다. 예제 입력 1 3 0 1 0 0 0 1 1 0 0 예제 출력 1 1 1 1 1 1 1 1 1 1 con..