JSFiddle - React, Tailwind, and code Playground
JavaScript
const networkDelayTime = (times, n, k) => {
const distFromSource = new Array(n + 1); // Since, k >= 1.
distFromSource.fill(Number.MAX_VALUE, 1);
distFromSource[k] = 0;
// (n - 1) times for n edges.
for (let i = 0; i < n-1; i++) {
for (const time of times) {
if (distFromSource[time[0]] !== Number.MAX_VALUE && (distFromSource[time[0]] + time[2]) < distFromSource[time[1]]) {
distFromSource[time[1]] = distFromSource[time[0]] + time[2];
}
}
}
const max = Math.max(...distFromSource.slice(1));
return max === Number.MAX_VALUE ? -1 : max;
};
console.log(networkDelayTime([
[2, 1, 1],
[2, 3, 1],
[3, 4, 1]
], 4, 2));