Problem
A company has n
employees with a unique ID for each employee from 0
to n - 1
. The head of the company is the one with headID
.
Each employee has one direct manager given in the manager
array where manager[i]
is the direct manager of the i-th
employee, manager[headID] = -1
. Also, it is guaranteed that the subordination relationships have a tree structure.
The head of the company wants to inform all the company employees of an urgent piece of news. He will inform his direct subordinates, and they will inform their subordinates, and so on until all employees know about the urgent news.
The i-th
employee needs informTime[i]
minutes to inform all of his direct subordinates (i.e., After informTime[i] minutes, all his direct subordinates can start spreading the news).
Return the number of minutes needed to inform all the employees about the urgent news.
Examples
Example 1:
|
|
Example 2:
graph TD; A(2) --- B(0) & C(1) & D(3) & E(4) & F(5)
|
|
Constraints:
1 <= n <= 10^5
0 <= headID < n
manager.length == n
0 <= manager[i] < n
manager[headID] == -1
informTime.length == n
0 <= informTime[i] <= 1000
informTime[i] == 0
if employeei
has no subordinates.- It is guaranteed that all the employees can be informed.
Solution
This problem can be solved using a tree traversal mechanism. Since the structure forms a tree where each employee has a manager (except the head), we can represent this relationship as an adjacency list. Specifically:
- We will build the adjacency list representation where each employee points to their direct subordinates.
- Once the adjacency list is constructed, we use Depth First Search (DFS) or Breadth First Search (BFS) to traverse the tree.
- During traversal, calculate the total time required to inform each employee recursively. For a manager, the total time required is the sum of their
informTime
and the maximum time it takes for any of their subordinates to spread the news.
Method 1 - DFS
Code
|
|
|
|
Complexity
- ⏰ Time complexity:
O(n)
. Building the adjacency list takesO(n)
, and traversing through all employees takesO(n)
since the tree hasn
nodes. - 🧺 Space complexity:
O(n)
. For the adjacency list and the recursive call stack (in case of DFS).