图论之拓扑排序

依旧是模板

from collection import deque,defaultdict
def topological_sort(n,edges):
    inDegree=[0]*n
    graph=defaultdict(list)
    for s,t in edges:
        inDegree[t]+=1
        graph[s].append(t)
    queue=deque([i for i in range(n) if inDegree[i]==0])
    result=[]
    while queue:
        cur=queue.popleft()
        result.append(cur)
        for file in graph[cur]:
            inDegree[file]-=1
            if inDegree[file]==0:
                queue.append(file)
    if len(result)==n:
        print(" ".join(map(str,result)))
    else:
        print(-1)
if __name__=="__main__":
    n,m=map(int,input().split())
    edges=[tuple(map(int,input().split())) for _ in range(m)]
    topological_sort(n,edges)
posted @ 2026-06-02 17:21  zidurile  阅读(11)  评论(0)    收藏  举报