Skip to content

Instantly share code, notes, and snippets.

@mvallebr
Created January 18, 2021 21:51
Show Gist options
  • Select an option

  • Save mvallebr/bacc449dc75ac4b7fb1c95a5494d1a2e to your computer and use it in GitHub Desktop.

Select an option

Save mvallebr/bacc449dc75ac4b7fb1c95a5494d1a2e to your computer and use it in GitHub Desktop.
class Solution:
def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:
reqs = defaultdict(list)
for course, req in prerequisites:
reqs[course].append(req)
visited = set()
def detect_cycle(i, visiting):
visiting.add(i)
for j in reqs[i]:
if j in visited:
continue
if j in visiting:
return True
if detect_cycle(j, visiting):
return True
visiting.remove(i)
visited.add(i)
return False
for i in range(numCourses):
if detect_cycle(i, set()):
return False
return True
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment