题解 | 【模板】拓扑排序

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),这两个点坑了我

全部评论

相关推荐

真是做吐了🤮
投递美团等公司10个岗位 >
点赞 评论 收藏
分享
神哥不得了:神哥来啦~1.建议不要包装,很容易问穿2.没日常也能找到暑期3.简历模板换一下,字体和版式看着好难受,而且最好压缩到一页,技术的倒数第2和3重复啦,项目建议换两个高质量的上去,如果时间够的话,八股就把高频top50的题目多巩固几遍,吃透,注意不要找假高频,这样绝对能找到暑期
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务