func_code_string: #include <bits/stdc++.h>   using namespace std;   int n;   int f[200005][3], ans, dep[200005];   int head[200005], cnt;   struct data {     int next, to;     data(int next = 0, int to = 0) : next(next), to(to) {}   } edge[200005 << 1];   int read() {     char c = getchar();     int x = 0;     while (!isdigit(c)) c = getchar();     while (isdigit(c)) {       x = (x << 3) + (x << 1) + c -  0 ;       c = getchar();     }     return x;   }   void connect(int u, int v) {     edge[++cnt] = data(head[u], v);     head[u] = cnt;   }   void DFS(int u, int pre) {     f[u][0] = 1;     dep[u] = dep[pre] + 1;     int mini = 0x3f3f3f3f;     for (int i = head[u]; i; i = edge[i].next) {       int v = edge[i].to;       if (v == pre) continue;       DFS(v, u);       f[u][0] = f[u][0] + min(min(f[v][0], f[v][1]), f[v][2]);       f[u][2] = f[u][2] + min(f[v][0], f[v][1]);       mini = min(mini, f[v][0] - min(f[v][0], f[v][1]));     }     f[u][1] = f[u][2] + mini;     if (dep[u] == 3) ans = ans + min(f[u][0], min(f[u][1], f[u][2]));   }   int main() {     n = read();     for (int i = 1; i < n; ++i) {       int u = read(), v = read();       connect(u, v);       connect(v, u);     }     DFS(1, 0);     printf( %d n , ans);   }   