반응형
https://www.acmicpc.net/problem/2533
#include <bits/stdc++.h>
using namespace std;
#define MX 1000001
int N, dp[MX][2];
vector<int> adj[MX];
bool vis[MX];
void DFS(int node){
vis[node] = 1;
dp[node][0] = 1;
for(auto nx : adj[node]){
if(vis[nx]) continue;
DFS(nx);
dp[node][0] += min(dp[nx][0], dp[nx][1]);
dp[node][1] += dp[nx][0];
}
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> N;
for(int i=0; i<N-1; i++){
int u,v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
DFS(1);
cout << min(dp[1][0], dp[1][1]) << '\n';
return 0;
}
반응형
'Algorithm > problem' 카테고리의 다른 글
백준 1300번 : K번째 수 - 이분 탐색 C++ (0) | 2022.10.05 |
---|---|
백준 2213번 : 트리의 독립집합 - 트리 DP, C++ (0) | 2022.10.03 |
백준 15681번 : 트리와 쿼리 - DFS , C++ (0) | 2022.10.02 |
백준 1949번 : 우수마을 - 트리 C++ (0) | 2022.10.02 |
[백준] 4256번 : 트리 - 재귀 (0) | 2022.10.02 |