1# Runtime: 1787 ms (Top 90.42%) | Memory: 42.7 MB (Top 96.74%)2class Solution:3def minimumTime(self, n: int, relations: List[List[int]], time: List[int]) -> int:4in_degree = defaultdict(int)5graph = defaultdict(list)6latest = [0] * (n + 1)7for u, v in relations:8graph[u].append(v)9in_degree[v] += 110q = []11for i in range(1, n + 1):12if in_degree[i] == 0:13latest[i] = time[i - 1]14q.append(i)15while q:16node = q.pop()17t0 = latest[node]18for nei in graph[node]:19t = time[nei - 1]20latest[nei] = max(latest[nei], t0 + t)21in_degree[nei] -= 122if in_degree[nei] == 0:23q.append(nei)24return max(latest)