func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e6 + 2;   int len, ans = 0, maxdis[N];   vector<int> adj[N], cur;   void dfs(int x, int p) {     if (adj[x].size() == 1) {       maxdis[x] = 0;       return;     }     int i, idxmin1;     for (i = 0; i < adj[x].size(); i++) {       if (adj[x][i] != p) {         dfs(adj[x][i], x);       }     }     cur.clear();     for (i = 0; i < adj[x].size(); i++) {       if (adj[x][i] != p) {         cur.push_back(maxdis[adj[x][i]] + 1);       }     }     sort(cur.begin(), cur.end());     for (i = 0; i < cur.size() - 1; i++) {       if (cur[i] + cur[i + 1] > len) {         break;       }     }     ans += cur.size() - 1 - i;     maxdis[x] = cur[i];   }   int main() {     ios::sync_with_stdio(0);     int n, i, j, k, l = 0;     cin >> n >> len;     for (i = 1; i < n; i++) {       cin >> j >> k;       adj[j].push_back(k);       adj[k].push_back(j);     }     for (i = 1; i <= n; i++) {       if (adj[i].size() > 1) {         l = i;         break;       }     }     dfs(l, l);     cout << ans + 1;   }   