[ ๋ฌธ์ ๋งํฌ ]
https://www.acmicpc.net/problem/11404
๐ฉ ์กฐ๊ฑด
1. ๋ชจ๋ ๋์์ ์์ ๋ํด ํ์ํ ๋น์ฉ์ ์ต์๊ฐ์ ๊ตฌํด๋ผ
๐ฉ ์ ๊ทผ
1 -> ํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ ์ด์ฉํ์! (์ผ์คfor๋ฌธ ์ฐ๋ฉด ๋จ)
๐ฉ ์ํ์ฐฉ์ค
- ์ฒ์์ ์ ์ญ๋ณ์๋ก ๋ฐฐ์ด์ ์ ์ธํ๊ณ ์๋์ ๊ฐ์ด ์ด๊ธฐํํ๋๋ฐ, ์ด๋ฌ๋ฉด ์ฒซ๋ฒ์งธ ์์๋ง ํด๋น ๊ฐ์ผ๋ก ์ง์ ๋๋ค๊ณ ํ๋ค.
=> ํน์ ๊ฐ์ผ๋ก ์ด๊ธฐํํ๋ ค๋ฉด for๋ฌธ ๋ฑ์ ๋ฐฉ์์ ์ฌ์ฉํด์ผ ํ๋ค.int table[101][101] = { 100001 }; // ์๋ชป๋ ์ด๊ธฐํ ๋ฐฉ์
- ๊ณ์ 98%์ ๋์์ "ํ๋ ธ์ต๋๋ค"๊ฐ ๋์๋ค.. ๊ทธ ์ด์ ๋ "๋น์ฉ์ 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค."๋ผ๋ ์กฐ๊ฑด ๋๋ฌธ์ ์์ฒ๋ผ ๋ฐฐ์ด์ ์ด๊ธฐ๊ฐ์ 100,001๋ก ์ค์ ํ๊ธฐ ๋๋ฌธ์ด์๋ค.
=> ๋์์ ์ต๋๊ฐ์ด 100, ๋น์ฉ์ ์ต๋๊ฐ์ด 100,000์ด๋ฏ๋ก ์ด๋ค ๋์๋ก ์ด๋ํ๋๋ฐ ํ์ํ ์ต๋ ๋น์ฉ์ 100,000 * 99์ด๋ค. ๋ฐ๋ผ์ ์ด๊ธฐ INF์ ๊ฐ์ ๊ทธ ์ด์์ผ๋ก ์ก์์ผ ํ๋ค.
๐ป ์ฝ๋ (C++)
#include <iostream>
using namespace std;
int table[101][101];
int main() {
for (int i = 0; i < 101; i++) {
for (int j = 0; j < 101; j++) {
if (i == j) table[i][j] = 0;
else table[i][j] = 100000 * 100;
}
}
int n, m;
cin >> n >> m;
int a, b, c;
for (int i = 0; i < m; i++) {
cin >> a >> b >> c;
if (table[a][b] < c) continue;
table[a][b] = c;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
for (int k = 1; k <= n; k++) {
if (j == i || k == i || j == k) continue;
if (table[j][k] > table[j][i] + table[i][k]) {
table[j][k] = table[j][i] + table[i][k];
}
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (table[i][j] == 100000*100) {
cout << 0 << " ";
continue;
}
cout << table[i][j] << " ";
}
cout << "\n";
}
}
'๐ป Algorithms > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 11403 ๊ฒฝ๋ก ์ฐพ๊ธฐ - ๊ทธ๋ํ, DFS (0) | 2024.08.17 |
---|---|
[๋ฐฑ์ค] 1927 ์ต์ ํ - ์ฐ์ ์์ ํ (0) | 2024.08.14 |
[๋ฐฑ์ค] 11780 ํ๋ก์ด๋2 - ํ๋ก์ด๋ ๊ฒฝ๋ก๋ณต์ (0) | 2024.08.04 |
[๋ฐฑ์ค] 16398 ํ์ฑ์ฐ๊ฒฐ - MST, ์ฐ์ ์์ ํ (0) | 2024.08.04 |
[๋ฐฑ์ค] 1766 ๋ฌธ์ ์ง - ์์์ ๋ ฌ, ์ฐ์ ์์ ํ (0) | 2024.08.04 |