func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename A, typename B, typename C>   struct triple {     A X;     B Y;     C Z;     triple(A a = 0, B b = 0, C c = 0) : X(a), Y(b), Z(c) {}   };   template <typename A, typename B, typename C>   triple<A, B, C> make_triple(A a = 0, B b = 0, C c = 0) {     return triple<A, B, C>(a, b, c);   }   template <typename A, typename B, typename C>   bool operator<(const triple<A, B, C>& a, const triple<A, B, C>& b) {     if (a.X != b.X) return a.X < b.X;     if (a.Y != b.Y) return a.Y < b.Y;     return a.Z < b.Z;   }   template <typename T, typename SS>   ostream& operator<<(ostream& ofs, const pair<T, SS>& p) {     ofs <<  (   << p.first <<   ,   << p.second <<   ) ;     return ofs;   }   template <typename T>   void print(T a) {     for (auto i : a) cout << i <<    ;     cout <<   n ;   }   template <typename T>   T max(T a, T b, T c) {     return max(a, max(b, c));   }   template <typename T>   T min(T a, T b, T c) {     return min(a, max(b, c));   }   vector<vector<long long> > g;   vector<long long> h;   vector<long long> p;   void dfs(long long v, long long hh = 0, long long pp = -1) {     h[v] = hh;     for (auto to : g[v])       if (to != pp) {         p[to] = v;         dfs(to, hh + 1, v);       }   }   signed main() {     srand(time(NULL));     cin.tie(0);     cout.tie(0);     ios_base::sync_with_stdio(false);     long long n;     cin >> n;     g.resize(n);     p.resize(n);     h.resize(n);     for (long long _ = 0; _ < (n - 1); _++) {       long long x, y;       cin >> x >> y;       x--, y--;       g[x].push_back(y);       g[y].push_back(x);     }     dfs(0);     set<pair<long long, long long> > need;     for (long long i = 0; i < n; i++)       if (h[i] > 2) need.insert(make_pair(-h[i], i));     long long ans = 0;     while (need.size()) {       long long x = need.begin()->second;       long long y = p[x];       if (need.count(make_pair(-h[y], y))) need.erase(make_pair(-h[y], y));       for (auto to : g[y])         if (need.count(make_pair(-h[to], to))) need.erase(make_pair(-h[to], to));       ans++;     }     cout << ans <<   n ;   }   