思路:如题,非常经典的拓扑排序模板题。建议没学过的同学好好学习一下,主要是引入了pre数组,然后这里采用bfs实现
代码:
import sys
from collections import deque
input = lambda: sys.stdin.readline().strip()
import math
inf = 10 ** 18
def I():
return input()
def II():
return int(input())
def MII():
return map(int, input().split())
def GMI():
return map(lambda x: int(x) - 1, input().split())
def LI():
return input().split()
def LII():
return list(map(int, input().split()))
def LFI():
return list(map(float, input().split()))
fmax = lambda x, y: x if x > y else y
fmin = lambda x, y: x if x < y else y
isqrt = lambda x: int(math.sqrt(x))
'''
'''
def solve():
n, m = MII()
g = [[] for _ in range(n + 1)]
pre = [0] * (n + 1)
for _ in range(m):
u, v = MII()
g[u].append(v)
pre[v] += 1
q = deque([i for i in range(1, n + 1) if pre[i] == 0])
ans = []
while q:
u = q.popleft()
ans.append(u)
for v in g[u]:
pre[v] -= 1
if pre[v] == 0:
q.append(v)
if len(ans) == n:
print(*ans)
else:
print(-1)
t = 1
# t = II()
for _ in range(t):
solve()

京公网安备 11010502036488号