Skip to content

Commit 35896ce

Browse files
authored
Create 1129-shortest-path-with-alternating-colors.js
1 parent c4b8ffc commit 35896ce

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/**
2+
* @param {number} n
3+
* @param {number[][]} red_edges
4+
* @param {number[][]} blue_edges
5+
* @return {number[]}
6+
*/
7+
const shortestAlternatingPaths = function(n, red_edges, blue_edges) {
8+
let d = new Array(n * 2).fill(Number.MAX_SAFE_INTEGER)
9+
let queue = []
10+
d[0] = d[n] = 0
11+
queue.push(0)
12+
queue.push(n)
13+
while (queue.length) {
14+
let cur = queue.shift()
15+
if (cur < n) {
16+
for (let r of red_edges) {
17+
if (r[0] == cur && d[r[1] + n] > d[cur] + 1) {
18+
d[r[1] + n] = d[cur] + 1
19+
queue.push(r[1] + n)
20+
}
21+
}
22+
} else {
23+
for (let b of blue_edges) {
24+
if (b[0] == cur - n && d[b[1]] > d[cur] + 1) {
25+
d[b[1]] = d[cur] + 1
26+
queue.push(b[1])
27+
}
28+
}
29+
}
30+
}
31+
let res = new Array(n).fill(-1)
32+
for (let i = 0; i < n; i++) {
33+
res[i] =
34+
Math.min(d[i], d[i + n]) == Number.MAX_SAFE_INTEGER
35+
? -1
36+
: Math.min(d[i], d[i + n])
37+
}
38+
return res
39+
}

0 commit comments

Comments
 (0)