func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAX = 50050;   vector<int> e[MAX];   vector<int> ee[MAX];   int c[MAX][555];   int vis[MAX];   int n, k;   void solve(int indx) {     c[indx][0] = 1;     vis[indx] = 1;     for (int i = 0; i < e[indx].size(); i++) {       if (vis[e[indx][i]] == 1) continue;       int cindx = e[indx][i];       ee[indx].push_back(cindx);       solve(cindx);       for (int j = 0; j <= k; j++) {         if (c[cindx][j] == 0) break;         c[indx][j + 1] += c[cindx][j];       }     }   }   long long solve1() {     long long ans = 0;     for (int i = 1; i <= n; i++) {       long long ret = 0;       for (int j = 0; j < ee[i].size(); j++) {         for (int K = 1; K < k; K++) {           long long first = 0, second = 0;           first = c[ee[i][j]][K - 1];           second = c[i][k - K] - c[ee[i][j]][k - K - 1];           ret += (first * second);         }       }       ans += ret / 2;       ans += c[i][k];     }     return ans;   }   int main() {     cin >> n >> k;     for (int i = 0; i < n - 1; i++) {       int x, y;       cin >> x >> y;       e[x].push_back(y);       e[y].push_back(x);     }     solve(1);     cout << solve1() << endl;   }   