n, m=map(int, input().split()) #顶点数,边数 from collections import deque #邻接表+入度表+队列 graph=[[] for _ in range(n+1)] indegree=[0]*(n+1) for i in range(m): s,e=map(int, input().split()) graph[s].append(e) indegree[e]+=1 q=deque() for i in range(1,n+1): if indegree[i]==0:#添加入度为0的结点到队列中 q.append(i) res=[] while q: s= q.popleft() res.append(s) for e in graph[s]: indegree[e]-=1 if indegree[e]==0: q.append(e) if len(res)!=n: print(-1) else: print(' '.join(map(str,res)))
分配 n+1个,这样访问下标的时候可以从 1 开始