deushiro

Untitled

Dec 21st, 2019
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.72 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. typedef long long ll;
  6.  
  7.  
  8. vector<vector<int>> a;
  9. vector<bool> flag;
  10. int c = 0;
  11. int st = 0;
  12.  
  13. void dfs(int v, int mx){
  14.     flag[v] = true;
  15.     for(int u : a[v]){
  16.         if(!flag[u])
  17.             dfs(u, mx + 1);
  18.     }
  19.     if(mx > c){
  20.         st = v;
  21.         c = mx;
  22.     }
  23. }
  24.  
  25. int main()
  26. {
  27.     ll n, m;
  28.     cin >> n >> m;
  29.     flag.resize(n);
  30.     a.resize(n);
  31.     for(int i = 0; i < n - 1; ++i){
  32.         int x;
  33.         cin >> x;
  34.         a[i - 1].push_back(x - 1);
  35.         a[x - 1].push_back(i - 1);
  36.     }
  37.     dfs(0, 0);
  38.     int ans = c;
  39.     c = 0;
  40.     flag.resize(n);
  41.     dfs(st, 0);
  42.     ll res = ans * (m - 1) * 2 + c;
  43.     cout << res << endl;
  44.  
  45. }
Advertisement
Add Comment
Please, Sign In to add comment