fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define task "main"
  4. #define fi first
  5. #define se second
  6. #define ll long long
  7. const int mod=1e9+7;
  8. const int maxn=1e7+5;
  9. const int base=311;
  10. ll n,k;
  11. vector<ll> g[2000000];
  12. ll dp[200000][200];
  13. ll ans=0;
  14. void dfs(ll u,ll par)
  15. {
  16. for (int v:g[u])
  17. {
  18. if (v==par) continue;
  19. dfs(v,u);
  20. for (int i=0;i<k;i++)
  21. {
  22. ans += dp[u][i]*dp[v][k-i-1];
  23. }
  24. for (int i=1;i<=k;i++)
  25. {
  26. dp[u][i]+=dp[v][i-1];
  27. }
  28. }
  29. }
  30. signed main()
  31. {
  32. ios_base::sync_with_stdio(false);
  33. cin.tie(0);
  34. cout.tie(0);
  35. if (fopen(task".inp","r"))
  36. {
  37. freopen(task".inp","r",stdin);
  38. freopen(task".out","w",stdout);
  39. }
  40. cin>>n>>k;
  41.  
  42. for (int i=1;i<=n;i++) dp[i][0]=1;
  43. for (int i=1;i<n;i++)
  44. {
  45. ll u,v;
  46. cin>>u>>v;
  47. g[u].push_back(v);
  48. g[v].push_back(u);
  49. }
  50. dfs(1,0);
  51. cout<<ans;
  52. }
Success #stdin #stdout 0.02s 50552KB
stdin
Standard input is empty
stdout
Standard output is empty