문제풀이
[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)