Minimum Time to Collect All Apples in a Tree LeetCode solution in Python

1
# Runtime: 1818 ms (Top 5.15%) | Memory: 87.1 MB (Top 5.14%)
2
class Solution:
3

4
def minTime(self, n: int, edges: List[List[int]], hasApple: List[bool]) -> int:
5
graph_map = {i: set() for i in range(n)}
6
for edge in edges:
7
graph_map[edge[0]].add(edge[1])
8
graph_map[edge[1]].add(edge[0])
9

10
self.result = set()
11
visited = set()
12

13
def dfs(node, path):
14
visited.add(node)
15
if hasApple[node]:
16
temp = path + "|" + str(node)
17
temp = temp.split("|")[1:]
18
# print(temp)
19
for i in range(1, len(temp)):
20
self.result.add((temp[i], temp[i - 1]))
21
for nei in graph_map[node]:
22
if nei not in visited:
23
dfs(nei, path + "|" + str(node))
24

25
dfs(0, "")
26
# print(self.result)
27
return len(self.result) * 2

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0