https://www.acmicpc.net/problem/2056
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 |
댓글