1
class Solution {
2
public int numOfMinutes(int n, int headID, int[] manager, int[] informTime) {
3
Map<Integer, List<Integer>> graph = new HashMap<>();
4
for (int i = 0; i < n; i++) {
5
graph.putIfAbsent(manager[i], new ArrayList<>());
6
graph.get(manager[i]).add(i);
7
}
8
return dfs(graph, headID, informTime);
9
}
10

11
int dfs(Map<Integer, List<Integer>> graph, int curHead, int[] informTime) {
12
int curMax = 0;
13
if (!graph.containsKey(curHead)) {
14
return curMax;
15
}
16
for (int subordinate : graph.get(curHead)) {
17
curMax = Math.max(curMax, dfs(graph, subordinate, informTime));
18
}
19
return curMax + informTime[curHead];
20
}
21
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0