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 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
|