func_code_string: #include <bits/stdc++.h>   using namespace std;   inline int read() {     int x = 0;     char c = getchar();     bool p = 1;     for (; !isdigit(c); c = getchar())       if (c ==  - ) p = 0;     for (; isdigit(c); c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);     return p ? x : -x;   }   const int N = 1000105;   struct edge {     int to, nt;   } e[N * 2];   int n, k, x, y, ans, cnt, head[N], rt = 1, du[N];   void add(int u, int v) {     e[++cnt] = (edge){v, head[u]};     head[u] = cnt;   }   int dfs(int u, int fa) {     vector<int> v;     int i;     for (i = head[u]; i; i = e[i].nt)       if (e[i].to != fa) v.push_back(dfs(e[i].to, u) + 1);     sort(v.begin(), v.end());     for (i = v.size() - 1; i > 0; i--)       if (v[i] + v[i - 1] > k)         ans++;       else         break;     return v.size() == 0 ? 0 : v[i];   }   int main() {     n = read();     k = read();     for (int i = 1; i < n; i++) {       x = read();       y = read();       add(x, y);       add(y, x);       du[x]++;       du[y]++;       if (du[x] > 1) rt = x;       if (du[y] > 1) rt = y;     }     dfs(rt, 0);     cout << ans + 1;     return 0;   }   