카테고리 없음

[백준][Python] 2252 줄세우기

findTheValue 2021. 7. 28. 10:24

순서가 있으면 위상정렬.

import sys
input = sys.stdin.readline
from collections import deque

def topological_sort():
    queue=deque()
    for i in range(1,N+1):
        if not level[i]:
            queue.append(i)
            answer.append(i)
    while queue:
        cur_node=queue.popleft()
        for next_node in graph[cur_node]:
            level[next_node] -=1
            if not level[next_node]:
                queue.append(next_node)
                answer.append(next_node)

N,M = map(int,input().split())
graph = {i:[] for i in range(1,N+1)}
level = {i:0 for i in range(1,N+1)}
answer = []
for _ in range(M):
    a,b=map(int,input().split())
    graph[a] += [b]
    level[b] += 1
    
topological_sort()

print(*answer)