-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprerequisite-tasks.py
51 lines (42 loc) · 1.21 KB
/
prerequisite-tasks.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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#User function Template for python3
from collections import *
class Solution:
def isPossible(self,N,prerequisites):
graph = defaultdict(list)
for i, j in prerequisites:
graph[i].append(j)
indeg = [0]*N
for i in range(N):
for node in graph[i]:
indeg[node] += 1
qu = deque()
for i in range(N):
if indeg[i] == 0:
qu.append(i)
ans = 0
while qu:
curr = qu.popleft()
ans += 1
for nei in graph[curr]:
indeg[nei] -= 1
if indeg[nei] == 0:
qu.append(nei)
return ans == N
#{
# Driver Code Starts
#Initial Template for Python 3
if __name__ == '__main__':
test_cases = int(input())
for cases in range(test_cases) :
N=int(input())
P=int(input())
prerequisites=[]
for _ in range(P):
pair = [int(x) for x in input().split()]
prerequisites.append(pair)
ob=Solution()
if(ob.isPossible(N,prerequisites)):
print("Yes")
else:
print("No")
# } Driver Code Ends