문제풀이

[PY] 2252 : 줄 세우기

pwerty 2025. 4. 3. 20:43

https://www.acmicpc.net/problem/2252

위상 정렬의 기본을 다루는 문제이다.

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

stdCnt, compareNum = map(int, input().split())
compareList = [[] for _ in range(stdCnt + 1)]
degreeList = [0] * (stdCnt + 1)

for i in range(compareNum):
    compA, compB = map(int, input().split())
    compareList[compA].append(compB)
    degreeList[compB] += 1

queue = deque()
for i in range(1, stdCnt + 1):
    if(degreeList[i] == 0):
        queue.append(i)

while queue:
    cur = queue.popleft()
    print(str(cur) + " ", end="")

    for nextItem in compareList[cur]:
        degreeList[nextItem] -= 1
        if(degreeList[nextItem] == 0):
            queue.append(nextItem)