Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from collections import defaultdict
- n, m = map(int, input().split())
- g = defaultdict(set)
- for i in range(m):
- a, b = map(int, input().split())
- g[a].add(b)
- topsort = []
- res = True
- visited = [0] * 101
- def dfs(node):
- if not visited[node]:
- visited[node] = 1
- res = True
- for neigh in g[node]:
- res = res and dfs(neigh)
- visited[node] = 2
- topsort.append(node)
- return res
- elif visited[node] == 1:
- return False
- else:
- return True
- for v in range(1, n+1):
- if not visited[v]:
- if not dfs(v):
- res = False
- break
- if res:
- print("Yes")
- print(' '.join([str(item) for item in reversed(topsort)]))
- else:
- print("No")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement