题解 | #比赛名次#python

比赛名次

https://www.nowcoder.com/practice/a3a561d688264a8baa31b3edf2610641

while 1:
    try:
        N,M=list(map(int,input().split()))
        sons=[[] for i in range(N+1)] # 记录每个队的手下败将
        dft=[0 for i in range(N+1)] # 记录每个队的败场数
        for i in range(M):
            a,b=list(map(int,input().split()))
            sons[a].append(b)
            dft[b]+=1
        fath=[] # 记录未尝一败的队伍
        res=[]
        for i in range(1,N+1):
            if dft[i]==0:
                fath.append(i)
        while fath:
            m=min(fath)
            res.append(m) # 记录未尝一败的队伍中最小值
            fath.remove(m) # 拓扑网中去掉该队伍
            for son in sons[m]:
                dft[son]-=1 # 该队伍的手下败将败场数-1
                if dft[son]==0:
                    fath.append(son)
        print(*res)
    except Exception as e:
        break

全部评论

相关推荐

Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
11-11 14:21
西京学院 C++
无敌混子大王:首先一点,不管学校层次怎么样,教育经历放在第一页靠上位置,第一页看不到教育经历,hr基本直接扔掉了
点赞 评论 收藏
分享
offer多多的六边形战士很无语:看了你的博客,感觉挺不错的,可以把你的访问量和粉丝数在简历里提一下,闪光点(仅个人意见)
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务