fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int MAXN = 1000001;
  5. vector<int> g[MAXN];
  6. int dp[MAXN][2];
  7. bool visited[MAXN];
  8.  
  9. void dfs(int u) {
  10. visited[u] = true;
  11. dp[u][0] = 0;
  12. dp[u][1] = 1;
  13. for (int v : g[u]) {
  14. if (!visited[v]) {
  15. dfs(v);
  16. dp[u][0] += dp[v][1];
  17. dp[u][1] += min(dp[v][0], dp[v][1]);
  18. }
  19. }
  20. }
  21.  
  22. int main() {
  23. ios::sync_with_stdio(false);
  24. cin.tie(nullptr);
  25.  
  26. int N;
  27. cin >> N;
  28. for (int i = 0; i < N-1; i++) {
  29. int u, v;
  30. cin >> u >> v;
  31. g[u].push_back(v);
  32. g[v].push_back(u);
  33. }
  34.  
  35. dfs(1);
  36. cout << min(dp[1][0], dp[1][1]) << "\n";
  37. }
Success #stdin #stdout 0.01s 28296KB
stdin
9
1 2
1 3
2 4
3 5
3 6
4 7
4 8
4 9
stdout
3