[백준] 2252번 줄세우기( 파이썬, 위상정렬)

728x90
반응형

 

from collections import defaultdict
from collections import deque

height=defaultdict(list)
cnt=defaultdict(int)
dq=deque()

n,m=map(int,input().split())
for i in range(m):
    a,b=map(int,input().split())
    height[a].append(b)
    cnt[b]+=1 # b이전에 a가 선행된다 

for i in range(1,n+1):
    if cnt[i]==0:
        dq.append(i)


result=[]
while dq:
    x=dq.popleft()
    result.append(x)

    for j in height[x]:
        cnt[j]-=1
        if cnt[j]==0:
            dq.append(j)

for x in result:
    print(x, end=' ')
        

    
728x90
반응형
TAGS.

Comments