Leetcode 1101 Solution
This article provides solution to leetcode question 1101 (parallel-courses)
Access this page by simply typing in "lcs 1101" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/parallel-courses
Solution
class Solution:
def minimumSemesters(self, n: int, relations: List[List[int]]) -> int:
nodes = set(list(range(1, n + 1)))
child_nodes = collections.defaultdict(set)
parent_nodes = collections.defaultdict(set)
for src, dst in relations:
child_nodes[src].add(dst)
parent_nodes[dst].add(src)
q = collections.deque()
for node in nodes:
if len(parent_nodes[node]) == 0:
q.append(node)
ans = 0
while q:
s = len(q)
for _ in range(s):
node = q.popleft()
nodes.remove(node)
for child_node in child_nodes[node]:
if child_node not in nodes:
continue
parent_nodes[child_node].remove(node)
if len(parent_nodes[child_node]) == 0:
q.append(child_node)
ans += 1
return ans if len(nodes) == 0 else -1