fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int MAXN = 100005;
  5. vector<int> adj[MAXN];
  6. long long dp0[MAXN], dp1[MAXN];
  7.  
  8. void dfs(int u, int p) {
  9. dp0[u] = 0;
  10. dp1[u] = 1;
  11. for (int v : adj[u]) {
  12. if (v == p) continue;
  13. dfs(v, u);
  14. dp0[u] += dp1[v];
  15. dp1[u] += min(dp0[v], dp1[v]);
  16. }
  17. }
  18.  
  19. int main() {
  20. ios::sync_with_stdio(false);
  21. cin.tie(nullptr);
  22.  
  23. int n;
  24. if(!(cin >> n)) return 0;
  25. for (int i = 1; i <= n; ++i) adj[i].clear();
  26. for (int i = 0; i < n - 1; ++i) {
  27. int u, v; cin >> u >> v;
  28. adj[u].push_back(v);
  29. adj[v].push_back(u);
  30. }
  31. dfs(1, -1);
  32. cout << min(dp0[1], dp1[1]) << "\n";
  33. return 0;
  34. }
  35.  
Success #stdin #stdout 0.01s 5948KB
stdin
Standard input is empty
stdout
Standard output is empty