题解 | 【模板】拓扑排序

import sys

n, m = map(int, input().split(' '))
indegree = [0 for i in range(n + 1)]
vis = [0 for i in range(n + 1)]
indegree[0] = 100
edg = [[]for i in range(n + 1)]
for zzz in range(m):
    x, y = map(int, input().split(' '))
    indegree[y] += 1
    edg[x].append(y)
nodes = []

res = []

for i in range(n + 1):
    if indegree[i] == 0:
        nodes.append(i)
while nodes:
    t = nodes.pop()
    vis[t] = 1
    res.append(str(t))
    for v in edg[t]:
        indegree[v] -= 1
        if indegree[v] == 0:
            nodes.append(v)
if sum(vis) < n:
    print(-1)
else:
    print(' '.join(res))
    

没什么好说的,模板题,注意n=0还有要遍历到for i in range(n+1),这两个点坑了我

全部评论

相关推荐

牛客20485985...:抱抱😘,首先你还有春招,然后就算这时候没上岸也没关系,大部分人都是这样,毕业了再找也成,最后工作只是生活的一小部分,找到工作也不是一个必须的事情。不要气馁不要焦虑你只是陷入了短暂的低谷,你也一直有退路
点赞 评论 收藏
分享
04-15 09:59
门头沟学院 C++
yy_11:小公司人家没必要泄密,大公司都是本地部署了
你想吐槽公司的哪些规定
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务