fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const long long MaxN = 1e6;
  5.  
  6. long long n,k,res;
  7. vector<long long> a[MaxN+5];
  8. bool visited[MaxN+5];
  9. long long depth[MaxN+5];
  10.  
  11. void input()
  12. {
  13. cin >> n >> k;
  14.  
  15. for(long long i=1;i<=n-1;i++)
  16. {
  17. long long u,v;
  18. cin >> u >> v;
  19. a[u].push_back(v);
  20. a[v].push_back(u);
  21. }
  22. }
  23.  
  24. void dfs(long long i)
  25. {
  26. stack<long long> st;
  27. st.push(i);
  28. visited[i]=true;
  29.  
  30. while(!st.empty())
  31. {
  32. long long u=st.top();
  33. st.pop();
  34.  
  35. for(long long v:a[u])
  36. {
  37. if(!visited[v])
  38. {
  39. visited[v]=true;
  40. depth[v]=depth[u]+1;
  41. st.push(v);
  42. }
  43. }
  44. }
  45. }
  46.  
  47. void solve()
  48. {
  49. for(long long i=1;i<=n;i++)
  50. {
  51. visited[i]=false;
  52. depth[i]=0;
  53. }
  54.  
  55. dfs(1);
  56.  
  57. sort(depth+1,depth+n+1,greater<long long>());
  58.  
  59. res=0;
  60.  
  61. for(long long i=1;i<=k;i++)
  62. {
  63. res+=depth[i];
  64. }
  65.  
  66. cout << res;
  67. }
  68.  
  69. int main()
  70. {
  71. ios_base::sync_with_stdio(0);
  72. cin.tie(0);
  73.  
  74. input();
  75. solve();
  76. }
Success #stdin #stdout 0.01s 29436KB
stdin
Standard input is empty
stdout
Standard output is empty