(백준 알고리즘 문제풀이) 11404번 플로이드
by 줌코딩
문제
어떻게 접근할 것인가
- 이 문제는 모든 도시에서 모든 도시까지의 거리를 구하는 문제이다.
- 플로이드 와샬 알고리즘을 이용해서 풀었다.
코드
#include <cstdio>
#define INF 987654321
using namespace std;
int main(){
long long d[101][101];
int n, m, u, v, w;
scanf("%d %d", &n, &m);
for(int i = 0; i < n + 1; i++){
for(int j = 0; j < n + 1; j++)d[i][j] = INF;
d[i][i] = 0;
}
while(m--){
scanf("%d %d %d", &u, &v, &w);
if(d[u][v] > w)d[u][v] = w;
}
for(int k = 1; k < n + 1; k++){
for(int i = 1; i < n + 1; i++){
for(int j = 1; j < n + 1; j++){
if(d[i][j] > d[i][k] + d[k][j])d[i][j] = d[i][k] + d[k][j];
}
}
}
for(int i = 1; i < n + 1; i++){
for(int j = 1; j < n + 1; j++){
if(d[i][j] == INF)printf("0 ");
else printf("%lld ", d[i][j]);
}
printf("\n");
}
}
느낀점
- 플로이드는 쉽지~!
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Subscribe via RSS