给你一个整数 n,表示项目中的任务数量,编号从 0 到 n - 1。这些任务以任务 0 为根的 树 的形式连接。这由一个长度为 n - 1 的二维整数数组 edges 表示,其中 edges[i] = [ui, vi] 表示任务 ui 是任务 vi 的父节点。
同时给你一个长度为 n 的数组 baseTime,其中 baseTime[i] 表示完成任务 i 所需的时间。
每个任务的 完成时间 计算如下:
baseTime[i]。earliest 为其子节点中的 最小 完成时间,latest 为其子节点中的 最大 完成时间。ownDuration 为 (latest - earliest) + baseTime[i]。i 的完成时间为 latest + ownDuration。返回根任务 0 的完成时间。
示例 1:
输入: n = 3, edges = [[0,1],[1,2]], baseTime = [9,5,3]
输出: 17
解释:
baseTime[2] = 3。earliest = latest = 3ownDuration = (latest - earliest) + baseTime[1] = 53 + 5 = 8earliest = latest = 8ownDuration = (latest - earliest) + baseTime[0] = 98 + 9 = 17示例 2:
输入: n = 3, edges = [[0,1],[0,2]], baseTime = [4,7,6]
输出: 12
解释:
baseTime[1] = 7。baseTime[2] = 6。earliest = 6, latest = 7ownDuration = (latest - earliest) + baseTime[0] = (7 - 6) + 4 = 5latest + ownDuration = 7 + 5 = 12示例 3:
输入: n = 4, edges = [[0,1],[0,2],[2,3]], baseTime = [5,8,2,1]
输出: 18
解释:
baseTime[1] = 8。baseTime[3] = 1。earliest = latest = 1ownDuration = (latest - earliest) + baseTime[2] = 0 + 2 = 2latest + ownDuration = 1 + 2 = 3earliest = 3, latest = 8ownDuration = (latest - earliest) + baseTime[0] = (8 - 3) + 5 = 10latest + ownDuration = 8 + 10 = 18
提示:
1 <= n <= 105edges.length = n - 1edges[i] == [ui, vi]0 <= ui, vi <= n - 1ui != viedges 表示一棵有效的树。baseTime.length == n1 <= baseTime[i] <= 105253。