접근
이전에 풀었던 트리의 독립집합 문제와 매우 유사한 문제였다.
유사 문제: 2021.05.05 - [코딩/백준 (Python)] - 백준 2213번: 트리의 독립집합 (Python)
가중치가 없고, 각각의 마을들을 출력하지 않아 오히려 코드가 더 심플해졌다.
코드
import sys
sys.setrecursionlimit(10 ** 9)
n = int(sys.stdin.readline())
population = [0] + list(map(int, sys.stdin.readline().split()))
lines = [[] for _ in range(n + 1)]
for _ in range(n - 1):
a, b = map(int, sys.stdin.readline().split())
lines[a].append(b)
lines[b].append(a)
visited = [0] * (n + 1)
dp = [[0, 0] for _ in range(n + 1)]
def dfs(start):
visited[start] = 1
dp[start][0] = population[start]
for i in lines[start]:
if not visited[i]:
dfs(i)
dp[start][0] += dp[i][1]
dp[start][1] += max(dp[i][1], dp[i][0])
dfs(1)
print(max(dp[1][0], dp[1][1]))
더 생각해 볼 것?
...
코드나 내용 관련 조언, 부족한 점 및 질문 언제든 환영합니다!
반응형
'코딩 > 백준 (Python)' 카테고리의 다른 글
백준 11758번: CCW (Python) (0) | 2021.05.06 |
---|---|
백준 2166번: 다각형의 면적 (Python) (2) | 2021.05.05 |
백준 2533번: 사회망 서비스(SNS) (Python) (0) | 2021.05.05 |
백준 2213번: 트리의 독립집합 (Python) (0) | 2021.05.05 |
백준 15681번: 트리와 쿼리 (Python) (0) | 2021.05.05 |
최근댓글