func_code_string: #include <bits/stdc++.h>   using namespace std;   void dbvar() { cerr <<  ]  << endl; }   template <class H, class... T>   void dbvar(H h, T... t) {     cerr << to_string(h);     if (sizeof...(t)) cerr <<  ,  ;     dbvar(t...);   }   const int INF = (int)(1e9);   const long long int INFL = (long long int)(1e18);   const long double pi = acos(-1.0);   const int dx[4] = {-1, 0, 1, 0};   const int dy[4] = {0, 1, 0, -1};   long long int power(long long int n, long long int m) {     if (m == 0) return 1;     long long int val = power(n, m / 2);     if (m % 2 == 0)       return (val * val);     else       return ((val * val) * n);   }   long long int powermod(long long int n, long long int m, long long int _MOD) {     if (m == 0) return 1;     long long int val = powermod(n, m / 2, _MOD);     val %= _MOD;     if (m % 2 == 0)       return (val * val) % _MOD;     else       return (((val * val) % _MOD) * n) % _MOD;   }   const int mxN = 2e5 + 100;   vector<int> tree[mxN];   int depth[mxN], subtree[mxN], ans[mxN];   void dfs(int v, int p) {     depth[v] = depth[p] + 1;     subtree[v] = 1;     for (auto x : tree[v]) {       if (x != p) {         dfs(x, v);         subtree[v] += subtree[x];       }     }     ans[v] = subtree[v] - depth[v];   }   void solve() {     int n, k;     cin >> n >> k;     for (int i = 0; i < n - 1; i++) {       int x, y;       cin >> x >> y;       tree[x].push_back(y);       tree[y].push_back(x);     }     depth[0] = 0;     dfs(1, 0);     sort(ans + 1, ans + n + 1, greater<int>());     long long int res = 0;     for (int i = 1; i <= n - k; i++) res += ans[i];     cout << res <<   n ;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(0);     int t = 1;     for (int i = 1; i <= t; i++) {       solve();     }     return 0;   }   