1
var numOfMinutes = function (n, headID, manager, informTime) {
2
// Build the tree structure
3
let tree = {};
4

5
// {manager: direct employee}
6
for (let i = 0; i < manager.length; i++) {
7
// the head of the company does not have a manager
8
if (i === headID) {
9
continue;
10
}
11
let m = manager[i];
12
if (!tree[m]) {
13
tree[m] = [];
14
}
15
tree[m].push(i);
16
}
17

18
// BFS
19
// [employee, time to inform the head]
20
let queue = [[headID, 0]];
21
let res = 0;
22

23
while (queue.length) {
24
let [emp, currTime] = queue.shift();
25
let children = tree[emp] || [];
26
for (let child of children) {
27
res = Math.max(res, informTime[emp] + currTime);
28
queue.push([child, informTime[emp] + currTime]);
29
}
30
}
31

32
return res;
33
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0