반응형
728x170
플로이드 문제를 하나 더 살펴봤다
이것이 더욱 플로이드 알고리즘의 핵심인 최단거리에 가까울 것이다.
역시 노드는 100개정도로 별로 없다.
https://www.acmicpc.net/problem/11404
#맞는 풀이
#include <iostream>
#include <algorithm>
#define MAX 105
#define INF 123456789
using namespace std;
int n, m;
int path[MAX][MAX];
int main() {
cin >> n >> m;
//테이블 초기화(처음엔 모두 INF) (1부터 n까지)
for (int i = 1; i <= n; i++) {
fill(path[i], path[i]+n+1, INF);
}
for (int i = 0; i < m; i++) {
int from, to, cost;
cin >> from >> to >> cost;
path[from][to] = min(cost, path[from][to]); //방향 그래프
}
//자기 자신으로 돌아오는 경로도 있어서 초기화 시켜줘야함 최단 경로 0으로
for (int i = 1; i <= n; i++) path[i][i] = 0;
//플로이드 알고리즘
//i -> k -> j
for (int k = 1; k <= n; k++) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
path[i][j] = min(path[i][k]+path[k][j], path[i][j]);
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (path[i][j] == INF) cout << 0 << ' ';
else cout << path[i][j] << ' ';
}
cout << '\n';
}
}
728x90
반응형
그리드형
'문제풀이(Problem Solving)' 카테고리의 다른 글
백준, BOJ, 1197번, 최소 스패닝 트리 : C++ [CPP] ★★★★★ (0) | 2021.12.23 |
---|---|
백준, BOJ, 1922번, 네트워크 연결 : C++ [CPP] ★★★★ (0) | 2021.12.23 |
백준, BOJ, 11403번, 경로 찾기 : C++ [CPP] ★★★★ (0) | 2021.12.23 |
백준, BOJ, 1504번, 최소비용2 : C++ [CPP] ★ (0) | 2021.12.22 |
백준, BOJ, 11779번, 최소비용2 : C++ [CPP] ★ (0) | 2021.12.22 |