ํ๋ก์ด๋-์์ฌ
#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'; } }
'Algorithm ๐ง๐ปโ๐ป > Note' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++, ํ ํ๋ฆฟ] ์ ๋์จ ํ์ธ๋ (0) | 2022.09.02 |
---|---|
[C++, ํ ํ๋ฆฟ] map find index (0) | 2022.08.23 |
[C++, ํ ํ๋ฆฟ] ๋ค์ต์คํธ๋ผ (0) | 2022.05.28 |
[C++, ์ ์ฉํ ๋ฌธ๋ฒ] upper_bound, lower_bound (0) | 2022.05.11 |
[C++, ํ ํ๋ฆฟ] ์์ ๊ตฌํ๊ธฐ(์๋ผํ ์คํธ๋ค์ค์ ์ฒด) (0) | 2022.04.11 |
[C++, ์ ์ฉํ ๋ฌธ๋ฒ] ๋ฌธ์์ด ๋์๋ฌธ์ ๋ณํ (0) | 2022.04.10 |
๋๊ธ