반응형

https://www.acmicpc.net/problem/1949

 

1949번: 우수 마을

N개의 마을로 이루어진 나라가 있다. 편의상 마을에는 1부터 N까지 번호가 붙어 있다고 하자. 이 나라는 트리(Tree) 구조로 이루어져 있다. 즉 마을과 마을 사이를 직접 잇는 N-1개의 길이 있으며,

www.acmicpc.net

 

풀이는 다음 링크와 동일합니다.

2021.11.18 - [Algorithm] - 백준 2213 : 트리의 독립집합

 

 

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int dp[10001][2];
int n, a, b;
vector<int> graph[10001];

void init(int node, int prev) {
	for (int next : graph[node]) {
		if (next == prev) continue;
		init(next, node);
		dp[node][0] += dp[next][1];
		dp[node][1] += max(dp[next][0], dp[next][1]);
	}
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> dp[i][0];
		dp[i][1] = 0;
	}

	for (int i = 1; i < n; i++) {
		cin >> a >> b;
		graph[a].push_back(b);
		graph[b].push_back(a);
	}

	init(1, -1);

	cout << max(dp[1][0], dp[1][1]) << "\n";
}
반응형

'Algorithm' 카테고리의 다른 글

백준 9184 : 신나는 함수 실행  (0) 2021.11.18
백준 1932 : 정수 삼각형  (0) 2021.11.18
백준 2213 : 트리의 독립집합  (0) 2021.11.18
백준 15681 : 트리와 쿼리  (0) 2021.11.18
백준 19598 : 최소 회의실 개수  (0) 2021.11.18

+ Recent posts