DeepSeek LeetCode 2050.并行课程 III Python3实现
pythonfrom collections import dequefrom typing import Listclass Solution:def minimumTime(self, n: int, relations: List[List[int]], time: List[int]) - int:# 构建图 (0-index)graph [[] for _ in range(n)]indegree [0] * nfor u, v in relations:u - 1v - 1graph[u].append(v)indegree[v] 1# dp[i] 表示完成课程 i 的最早时间dp [0] * nq deque()# 初始化入度为 0 的课程for i in range(n):if indegree[i] 0:dp[i] time[i]q.append(i)# 拓扑排序 DPwhile q:u q.popleft()for v in graph[u]:# 更新后继课程的最早完成时间dp[v] max(dp[v], dp[u] time[v])indegree[v] - 1if indegree[v] 0:q.append(v)# 所有课程完成时间的最大值即为答案return max(dp)