-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsolution.py
34 lines (27 loc) · 894 Bytes
/
solution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from typing import List
class Solution:
def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:
preMap = {i: [] for i in range(numCourses)}
for crs, pre in prerequisites:
preMap[crs].append(pre)
visitSet = set()
def dfs(crs):
if crs in visitSet:
return False
if preMap[crs] == []:
return True
visitSet.add(crs)
for pre in preMap[crs]:
if not dfs(pre):
return False
visitSet.remove(crs)
preMap[crs] = []
return True
for crs in range(numCourses):
if not dfs(crs):
return False
return True
if __name__ == '__main__':
numCourses = 2
prerequisites = [[1, 0]]
print(Solution().canFinish(numCourses, prerequisites))