https://www.acmicpc.net/problem/2056
2056번: 작업
수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해
www.acmicpc.net
1. 위상 정렬이다. 각 노드마다 최소비용을 구하는 dp 문제이다.
2. 이전 노드들 중에 가장 큰 비용을 현재 노드의 비용과 더해간다.
3. dp 중에 가장 큰 값이 ans다
n = int(input())
dp = [0 for _ in range(n+1)]
graph = [[] for _ in range(n+1)]
for i in range(1, n+1):
cost, m, *lst = map(int, input().split())
dp[i] = cost
for x in lst:
graph[i].append(x)
for i in range(1, n+1):
tmp = 0
for j in graph[i]:
tmp = max(tmp, dp[j])
dp[i] += tmp
print(max(dp))
'알고리즘 > BOJ' 카테고리의 다른 글
[Python] 백준 17404번: RGB거리 2 (0) | 2021.10.07 |
---|---|
[Python] 백준 4811번: 알약 (0) | 2021.10.07 |
[Python] 백준 20040번: 사이클 게임 (0) | 2021.10.06 |
[Python] 백준 9084 동전 (0) | 2021.10.05 |
[Python] 백준 7579: 앱 (0) | 2021.10.04 |
댓글