Description
Return ordering of courses to finish all courses.
Constraints
- Time Complexity:
O(V+E) - Space Complexity:
O(V+E)
Tags
dfsbfsgraphtopological-sort
def findOrder(numCourses, prerequisites):
prereq = {c: [] for c in range(numCourses)}
for crs, pre in prerequisites:
prereq[crs].append(pre)
output = []
visit, cycle = set(), set()
def dfs(crs):
if crs in cycle:
return False
if crs in visit:
return True
cycle.add(crs)
for pre in prereq[crs]:
if dfs(pre) == False: return False
cycle.remove(crs)
visit.add(crs)
output.append(crs)
return True
for c in range(numCourses):
if dfs(c) == False:
return []
return output