0%

207. Course Schedule

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution:
def canFinish(self, N: int, G: List[List[int]]) -> bool:
IN=[0]*N
OUT=[[]*N for _ in range(N)]
for g in G:
fst,snd=g
IN[fst]+=1
OUT[snd].append(fst)
Q=deque()

seen=0
#find all nodes with indegree=0 and store them in Q
for i in range(len(IN)):
if IN[i]==0:
Q.append(i)
while Q:
a=Q.popleft()
seen+=1
for b in OUT[a]:
IN[b]-=1
if IN[b]==0:
Q.append(b)
print(seen)
return seen==N