๐ŸŽฒ ๋ฐฑ์ค€ 1238๋ฒˆ ํŒŒํ‹ฐ

Jeongeunยท2023๋…„ 12์›” 28์ผ

๋ฐฑ์ค€

๋ชฉ๋ก ๋ณด๊ธฐ
148/188

๋ฐฑ์ค€ 1238๋ฒˆ

๐ŸŽจ ์ฐธ๊ณ 
๐ŸŽจ ์ฐธ๊ณ  ์ฝ”๋“œ

์ฝ”๋“œ

const fs = require('fs'); 
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const [N, M, X] = input.shift().split(" ").map(Number);

const graph = Array.from(new Array(N + 1), () => []);
const result = new Array(N + 1);

for (let i = 0; i < M; i++) {
  const [s, e, v] = input[i].split(" ").map(Number);
  graph[s].push([e, v]);
}

for (let n = 1; n <= N; n++) {
  const distArr = new Array(N + 1).fill(Infinity);
  const queue = [[n, 0]];
  distArr[n]=0;
  while (queue.length) {
    const [to, dist] = queue.shift();
    for (let i = 0; i < graph[to].length; i++) {
      const [nextTo, nextDist] = graph[to][i];
      if (distArr[nextTo] > dist + nextDist) {
        distArr[nextTo] = dist + nextDist;
        queue.push([nextTo, distArr[nextTo]]);
      }
    }
  }
  result[n] = [...distArr];
}

let answer = 0;
for (let n = 1; n <= N; n++) {
  answer = Math.max(answer, result[n][X] + result[X][n]);
}

console.log(answer);

0๊ฐœ์˜ ๋Œ“๊ธ€