1443. Minimum Time to Collect All Apples in a Tree
https://leetcode.com/problems/minimum-time-to-collect-all-apples-in-a-tree/


Last updated
https://leetcode.com/problems/minimum-time-to-collect-all-apples-in-a-tree/


Last updated
Input: n = 7, edges = [[0,1],[0,2],[1,4],[1,5],[2,3],[2,6]], hasApple = [false,false,true,false,true,true,false]
Output: 8
Explanation: The figure above represents the given tree where red vertices have an apple. One optimal path to collect all apples is shown by the green arrows. Input: n = 7, edges = [[0,1],[0,2],[1,4],[1,5],[2,3],[2,6]], hasApple = [false,false,true,false,false,true,false]
Output: 6
Explanation: The figure above represents the given tree where red vertices have an apple. One optimal path to collect all apples is shown by the green arrows. Input: n = 7, edges = [[0,1],[0,2],[1,4],[1,5],[2,3],[2,6]], hasApple = [false,false,false,false,false,false,false]
Output: 0class Solution:
def minTime(self, n: int, edges: List[List[int]], hasApple: List[bool]) -> int:
v = collections.defaultdict(list)
for f, t in edges:
v[f].append(t)
def dfs(node):
res = 0
for i in v[node]:
res += dfs(i)
if res == 0:
return 2 if hasApple[node] else 0
return res + (2 if node != 0 else 0)
return dfs(0)