1516. 게임 개발
1516번: 게임 개발
첫째 줄에 건물의 종류 수 N(1 ≤ N ≤ 500)이 주어진다. 다음 N개의 줄에는 각 건물을 짓는데 걸리는 시간과 그 건물을 짓기 위해 먼저 지어져야 하는 건물들의 번호가 주어진다. 건물의 번호는 1부
www.acmicpc.net
- 내 풀이
- 위상정렬
from collections import deque
n=int(input())
time=[0]
indegree=[0]*(n+1)
graph=[[] for _ in range(n+1)]
for i in range(1,n+1):
tmp=list(map(int,input().split()))
time.append(tmp.pop(0))
while tmp:
x=tmp.pop(0)
if x==-1: break
graph[x].append(i)
indegree[i]+=1
result=[0]*(n+1)
queue=deque()
def solve():
for i in range(1,n+1):
if indegree[i]==0:
queue.append(i)
while queue:
q=queue.popleft()
result[q]+=time[q]
for gp in graph[q]:
result[gp]=max(result[gp],result[q])
indegree[gp]-=1
if indegree[gp]==0:
queue.append(gp)
solve()
print(*result[1:], sep="\n")'코딩테스트 > BOJ' 카테고리의 다른 글
| [백준] [부분집합] 6603. 로또 (0) | 2023.05.09 |
|---|---|
| [백준] [다익스트라 알고리즘] 14938. 서강그라운드 (0) | 2023.05.09 |
| [백준] [DP] [최장증가수열] 2565. 전깃줄 (0) | 2023.05.06 |
| [백준] [이진 탐색] [최장증가수열] 12015. 가장 긴 증가하는 부분 수열 2 (0) | 2023.05.06 |
| [백준] [BFS] 4963. 섬의 개수 (0) | 2023.05.02 |