4
function mapAllEdges(edges) {6
for (let edge of edges) {7
if (!map.has(edge[0])) {10
map.get(edge[0]).push(edge[1]);15
function bfs(color, redNodeMap, blueNodeMap, result) {18
let currentColor = color;19
while (queue.length > 0) {20
const size = queue.length;21
for (let i = 0; i < size; i++) {22
const node = queue.shift();23
if (result[node] === -1 || length < result[node]) {24
result[node] = length;26
const map = RED === currentColor ? redNodeMap : blueNodeMap;28
const edges = map.get(node);34
currentColor = RED === currentColor ? BLUE : RED;39
function shortestPath(redEdges, blueEdges, color, result) {40
const redNodeMap = mapAllEdges(redEdges);41
const blueNodeMap = mapAllEdges(blueEdges);42
bfs(color, redNodeMap, blueNodeMap, result);47
* @param {number[][]} redEdges48
* @param {number[][]} blueEdges51
var shortestAlternatingPaths = function (n, redEdges, blueEdges) {52
const result = new Array(n).fill(-1);53
shortestPath(redEdges, blueEdges, RED, result);54
shortestPath(redEdges, blueEdges, BLUE, result);