[백준] 1766번 문제집 (위상정렬, 우선순위큐, 파이썬)
728x90
반응형
위상정렬 + 우선순위큐
문제번호가 작은 것 부터 풀어야된다
from collections import defaultdict
import heapq
height=defaultdict(list)
cnt=defaultdict(int)
q=[]
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:
q.append(i)
result=[]
while q:
x=heapq.heappop(q)
result.append(x)
for j in height[x]:
cnt[j]-=1
if cnt[j]==0:
heapq.heappush(q,j)
for x in result:
print(x, end=' ')
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 1516번 게임개발 (파이썬, 위상정렬, 골드3) (0) | 2020.10.10 |
---|---|
[백준] 2056번 작업 (파이썬, 위상정렬) (0) | 2020.10.10 |
[백준] 2252번 줄세우기( 파이썬, 위상정렬) (0) | 2020.10.10 |
백준 10282번 해킹(파이썬) (0) | 2020.10.08 |
백준 1753번 다익스트라 (파이썬) (0) | 2020.10.08 |
TAGS.