You are given an integer n representing the number of tasks in a project, numbered from 0 to n - 1. These tasks are connected as an undirected tree. This is represented by a 2D integer array edges of length n - 1, where edges[i] = [ui, vi] indicates an undirected connection between task ui and task vi.
You are also given an array baseTime of length n, where baseTime[i] represents the time to complete task i.
For any chosen task as the root, the finish time of each task is calculated as follows:
baseTime[i].earliest be the minimum finish time among its children, and latest be the maximum finish time among its children.ownDuration be (latest - earliest) + baseTime[i].i is latest + ownDuration.Choose any task as the root and compute the finish time of that root based on the rules above.
Return the minimum possible finish time among all choices of root.
Example 1:
Input: n = 3, edges = [[0,1],[1,2]], baseTime = [9,1,5]
Output: 14
Explanation:
The optimal choice is to treat task 1 as the root.
baseTime[0] = 9.baseTime[2] = 5.earliest = 5, latest = 9ownDuration = (latest - earliest) + baseTime[1] = (9 - 5) + 1 = 5latest + ownDuration = 9 + 5 = 14Thus, the minimum possible finish time among all choices of root is 14.
Example 2:
Input: n = 3, edges = [[0,1],[0,2]], baseTime = [4,7,6]
Output: 12
Explanation:
The optimal choice is to treat task 0 as the root.
baseTime[1] = 7.baseTime[2] = 6.earliest = 6, latest = 7ownDuration = (latest - earliest) + baseTime[0] = (7 - 6) + 4 = 5latest + ownDuration = 7 + 5 = 12Thus, the minimum possible finish time among all choices of root is 12.
Example 3:
Input: n = 4, edges = [[0,1],[0,2],[2,3]], baseTime = [5,8,2,1]
Output: 16
Explanation:
The optimal choice is to treat task 1 as the root.
baseTime[3] = 1.earliest = latest = 1ownDuration = (latest - earliest) + baseTime[2] = 0 + 2 = 2latest + ownDuration = 1 + 2 = 3earliest = latest = 3ownDuration = (latest - earliest) + baseTime[0] = 0 + 5 = 5latest + ownDuration = 3 + 5 = 8earliest = latest = 8ownDuration = (latest - earliest) + baseTime[1] = 0 + 8 = 8latest + ownDuration = 8 + 8 = 16Thus, the minimum possible finish time among all choices of root is 16.
Constraints:
1 <= n <= 105edges.length = n - 1edges[i] == [ui, vi]0 <= ui, vi <= n - 1ui != viedges represents a valid undirected tree.baseTime.length == n1 <= baseTime[i] <= 105Loading editor...
No test cases available.