[백준] 1516번 게임개발 (파이썬, 위상정렬, 골드3)
728x90
반응형
from collections import defaultdict
import heapq
hour=defaultdict(int)
order=defaultdict(list)
cnt=defaultdict(int)
n=int(input())
for i in range(1,n+1):
m=list(map(int,input().split()))
hour[i]=m[0]
if m[1]==-1: continue
for j in m[1:-1]:
order[j].append(i) # i이전에 j가 성행한다
cnt[i]+=1
q=[]
ans=[0]*(n+1)
for i in range(1,n+1):
if cnt[i]==0:
q.append(i)
ans[i]=hour[i]
while q:
x=q.pop()
for y in order[x]: # y는 x 다음에 오는 작업
ans[y]=max(ans[y],ans[x]+hour[y])
cnt[y]-=1
if cnt[y]==0:
q.append(y)
for i in range(1,n+1):
print(ans[i])
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 12851번 숨바꼭질 2 (bfs, 파이썬) (1) | 2020.10.16 |
---|---|
[백준] 2178번 미로탐색 (bfs, python) (0) | 2020.10.14 |
[백준] 2056번 작업 (파이썬, 위상정렬) (0) | 2020.10.10 |
[백준] 1766번 문제집 (위상정렬, 우선순위큐, 파이썬) (0) | 2020.10.10 |
[백준] 2252번 줄세우기( 파이썬, 위상정렬) (0) | 2020.10.10 |
TAGS.