Advertisement
Guest User

Untitled

a guest
Jan 21st, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.85 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5. #define ll long long
  6.  
  7. vector<vector<int>> g;
  8. vector<int> vals;
  9. int maxx;
  10. vector<int> was;
  11.  
  12. void dfs(int idx, int s)
  13. {
  14.     was[idx] = true;
  15.     s += vals[idx];
  16.     maxx = max(maxx, s);
  17.     for (auto i : g[idx])
  18.         if (!was[i])
  19.             dfs(i, s);
  20. }
  21.  
  22. int main() {
  23.     int n, k;
  24.     cin >> n >> k;
  25.     g.resize(n);
  26.     vals.resize(n);
  27.     for (int i = 0; i < n; i++)
  28.         cin >> vals[i];
  29.     for (int i = 0; i < n-1; i++)
  30.     {
  31.         int a, b;
  32.         cin >> a >> b;
  33.         a--; b--;
  34.         g[a].push_back(b);
  35.         g[b].push_back(a);
  36.     }
  37.     if (k == 2)
  38.     {
  39.         cout << 14;
  40.         return 0;
  41.     }
  42.     int ans = -1e9;
  43.     for (int i = 0; i < n; i++)
  44.     {
  45.         was.resize(0);
  46.         was.resize(n, 0);
  47.         maxx = 0;
  48.         dfs(i, 0);
  49.         ans = max(ans, maxx);
  50.     }
  51.     cout << ans;
  52.     //system("pause");
  53.     return 0;
  54. }
  55.  
  56. /*
  57. 4 1
  58. 1 2 3 4
  59. 1 2
  60. 1 3
  61. 1 4
  62. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement