๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1238
๋ฌธ์ ํ์ด
ํ๋ก์ด๋ ์์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ ํ ์ ์๋ค.
ํ๋ก์ด๋ ์์ฌ ์๊ฐ๋ณต์ก๋๊ฐ O(n^3) ์ด๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด๊ณผ์ ์ผ๋ ค์ด ์์์ง๋ง ๋คํํ ํต๊ณผ!
// https://www.acmicpc.net/problem/1238
let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
let [N, M, X] = input
.shift()
.split(" ")
.map((n) => Number(n));
let graph = Array.from({ length: N }, () => {
return Array(N).fill(Infinity);
});
for (let i = 0; i < M; ++i) {
let [s_point, e_point, spend_time] = input[i].split(" ").map((n) => Number(n));
graph[s_point - 1][e_point - 1] = spend_time;
}
for (let i = 0; i < N; ++i) {
graph[i][i] = 0;
}
for (let i = 0; i < N; ++i) {
for (let j = 0; j < N; ++j) {
for (let z = 0; z < N; ++z) {
if (graph[j][i] !== Infinity && graph[i][z] !== Infinity) {
if (graph[j][i] + graph[i][z] < graph[j][z]) {
graph[j][z] = graph[j][i] + graph[i][z];
}
}
}
}
}
let answer = 0;
for (let i = 0; i < N; ++i) {
if (answer < graph[i][X - 1] + graph[X - 1][i]) {
answer = graph[i][X - 1] + graph[X - 1][i];
}
}
console.log(answer);
'๐Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค[JS] > 18111๋ฒ ๋ง์ธํฌ๋ํํธ (0) | 2025.01.26 |
---|---|
๋ฐฑ์ค[JS] > 1764๋ฒ ๋ฃ๋ณด์ก (0) | 2025.01.23 |
๋ฐฑ์ค[JS] > 18870๋ฒ ์ขํ ์์ถ (0) | 2025.01.18 |
๋ฐฑ์ค[JS] > 1620๋ฒ ๋๋์ผ ํฌ์ผ๋ชฌ ๋ง์คํฐ ์ด๋ค์ (0) | 2025.01.13 |
๋ฐฑ์ค[JS] > 7762๋ฒ ์ด์ค ์ฐ์ ์์ ํ (0) | 2025.01.12 |