Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- #define ll long long
- vector<vector<int>> g;
- vector<int> vals;
- int maxx;
- vector<int> was;
- void dfs(int idx, int s)
- {
- was[idx] = true;
- s += vals[idx];
- maxx = max(maxx, s);
- for (auto i : g[idx])
- if (!was[i])
- dfs(i, s);
- }
- int main() {
- int n, k;
- cin >> n >> k;
- g.resize(n);
- vals.resize(n);
- for (int i = 0; i < n; i++)
- cin >> vals[i];
- for (int i = 0; i < n-1; i++)
- {
- int a, b;
- cin >> a >> b;
- a--; b--;
- g[a].push_back(b);
- g[b].push_back(a);
- }
- if (k == 2)
- {
- cout << 14;
- return 0;
- }
- int ans = -1e9;
- for (int i = 0; i < n; i++)
- {
- was.resize(0);
- was.resize(n, 0);
- maxx = 0;
- dfs(i, 0);
- ans = max(ans, maxx);
- }
- cout << ans;
- //system("pause");
- return 0;
- }
- /*
- 4 1
- 1 2 3 4
- 1 2
- 1 3
- 1 4
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement