본문 바로가기
알고리즘/플로이드 워셜

플로이드-워셜 최단거리 (더블릿)

by tryotto 2019. 5. 16.
#include <stdio.h>
int dist[35][35] = { 0 };
int fw[35][35] = { 0 };
int main() {
// 입력 모두 받음
int nd, st, end;
scanf("%d %d %d", &nd, &st, &end);
for (int i = 1; i <= nd; i++)
for (int j = 1; j <= nd; j++) {
scanf("%d", &dist[i][j]);
fw[i][j] = dist[i][j];
}
//플로이드워셜 배열 작성 시작
for (int k = 1; k <= nd; k++)
for (int i = 1; i <= nd; i++)
for (int j = 1; j <= nd; j++)
if (fw[i][k] + fw[k][j] < fw[i][j])
fw[i][j] = fw[i][k] + fw[k][j];
//최종값 출력
printf("%d", fw[st][end]);
}


'알고리즘 > 플로이드 워셜' 카테고리의 다른 글

2606 바이러스  (0) 2019.08.27
1965 상자넣기 (오답, LIS 접근 필요)  (0) 2019.05.09
2660 회장뽑기  (0) 2019.05.09