Advertisement
serega1112

210

Mar 22nd, 2021
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.97 KB | None | 0 0
  1. class Solution:
  2.     def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -> List[int]:
  3.        
  4.         g = dict()
  5.        
  6.         for i in range(numCourses):
  7.             g[i] = []
  8.            
  9.         for a, b in prerequisites:
  10.             g[b].append(a)
  11.            
  12.         def toposort(v, flag):
  13.             if not flag:
  14.                 return flag
  15.             visited[v] = 1
  16.             for n in g[v]:
  17.                 if not flag:
  18.                     return flag
  19.                 if visited[n] == 0:
  20.                     flag = toposort(n, flag)
  21.                 elif visited[n] == 1:
  22.                     flag = False
  23.                
  24.             visited[v] = 2
  25.             st.append(v)
  26.             return flag
  27.        
  28.         visited = [0] * numCourses
  29.         st = []
  30.         flag = True
  31.         for v in g:
  32.             if not visited[v] and flag:
  33.                 flag = toposort(v, flag)
  34.            
  35.         return st[::-1] if flag else []
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement