ํ๋ก์ด๋-์์ฌ
#include <bits/stdc++.h>
#define INF 1e9 // ๋ฌดํ์ ์๋ฏธํ๋ ๊ฐ์ผ๋ก 10์ต์ ์ค์
using namespace std;
// ๋
ธ๋์ ๊ฐ์(N), ๊ฐ์ ์ ๊ฐ์(M)
// ๋
ธ๋์ ๊ฐ์๋ ์ต๋ 500๊ฐ๋ผ๊ณ ๊ฐ์
int n, m;
// 2์ฐจ์ ๋ฐฐ์ด(๊ทธ๋ํ ํํ)๋ฅผ ๋ง๋ค๊ธฐ
int graph[501][501];
int main(void) {
cin >> n >> m;
// ์ต๋จ ๊ฑฐ๋ฆฌ ํ
์ด๋ธ์ ๋ชจ๋ ๋ฌดํ์ผ๋ก ์ด๊ธฐํ
for (int i = 0; i < 501; i++) {
fill(graph[i], graph[i] + 501, INF);
}
// ์๊ธฐ ์์ ์์ ์๊ธฐ ์์ ์ผ๋ก ๊ฐ๋ ๋น์ฉ์ 0์ผ๋ก ์ด๊ธฐํ
for (int a = 1; a <= n; a++) {
for (int b = 1; b <= n; b++) {
if (a == b) graph[a][b] = 0;
}
}
// ๊ฐ ๊ฐ์ ์ ๋ํ ์ ๋ณด๋ฅผ ์
๋ ฅ ๋ฐ์, ๊ทธ ๊ฐ์ผ๋ก ์ด๊ธฐํ
for (int i = 0; i < m; i++) {
// A์์ B๋ก ๊ฐ๋ ๋น์ฉ์ C๋ผ๊ณ ์ค์
int a, b, c; cin >> a >> b >> c;
graph[a][b] = c;
}
// ์ ํ์์ ๋ฐ๋ผ ํ๋ก์ด๋ ์์
์๊ณ ๋ฆฌ์ฆ์ ์ํ
for (int k = 1; k <= n; k++) {
for (int a = 1; a <= n; a++) {
for (int b = 1; b <= n; b++) {
graph[a][b] = min(graph[a][b], graph[a][k] + graph[k][b]);
}
}
}
// ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅ
for (int a = 1; a <= n; a++) {
for (int b = 1; b <= n; b++) {
// ๋๋ฌํ ์ ์๋ ๊ฒฝ์ฐ, ๋ฌดํ(INFINITY)์ด๋ผ๊ณ ์ถ๋ ฅ
if (graph[a][b] == INF) cout << "INFINITY" << ' ';
// ๋๋ฌํ ์ ์๋ ๊ฒฝ์ฐ ๊ฑฐ๋ฆฌ๋ฅผ ์ถ๋ ฅ
else cout << graph[a][b] << ' ';
}
cout << '\n';
}
}
๋๊ธ