25 lines
No EOL
533 B
Python
25 lines
No EOL
533 B
Python
n, m = map(int, input().split())
|
|
adj = [[] for _ in range(n + 1)]
|
|
in_degree = [0] * (n + 1)
|
|
for _ in range(m):
|
|
u, v = map(int, input().split())
|
|
adj[u].append(v)
|
|
in_degree[v] += 1
|
|
q = []
|
|
for i in range(1, n + 1):
|
|
if in_degree[i] == 0:
|
|
q.append(i)
|
|
head = 0
|
|
topsort = []
|
|
while head < len(q):
|
|
u = q[head]
|
|
head += 1
|
|
topsort.append(u)
|
|
for v in adj[u]:
|
|
in_degree[v] -= 1
|
|
if in_degree[v] == 0:
|
|
q.append(v)
|
|
if len(topsort) == n:
|
|
print(*topsort)
|
|
else:
|
|
print("-1") |