Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution:
- def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -> List[int]:
- g = dict()
- for i in range(numCourses):
- g[i] = []
- for a, b in prerequisites:
- g[b].append(a)
- def toposort(v, flag):
- if not flag:
- return flag
- visited[v] = 1
- for n in g[v]:
- if not flag:
- return flag
- if visited[n] == 0:
- flag = toposort(n, flag)
- elif visited[n] == 1:
- flag = False
- visited[v] = 2
- st.append(v)
- return flag
- visited = [0] * numCourses
- st = []
- flag = True
- for v in g:
- if not visited[v] and flag:
- flag = toposort(v, flag)
- return st[::-1] if flag else []
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement