fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. void executeTime() {
  5. cerr << "Time Taken: " << (float)clock() / CLOCKS_PER_SEC << " secs";
  6. }
  7.  
  8. int main() {
  9.  
  10. int n; cin >> n;
  11.  
  12. vector<vector<int>> mp(n + 1);
  13.  
  14. for (int i = 0; i < n - 1; i++) {
  15. int u, v; cin >> u >> v;
  16.  
  17. mp[u].push_back(v);
  18. mp[v].push_back(u);
  19. }
  20.  
  21. vector<int> val(n + 1), dp(n + 1);
  22.  
  23. for (int i = 1; i <= n; i++) {
  24. cin >> val[i];
  25. }
  26.  
  27. function<void(int, int)> solve = [&](int src, int p) {
  28.  
  29. dp[src] = val[src];
  30.  
  31. for (auto &v : mp[src]) {
  32. if (v == p) {
  33. continue;
  34. };
  35.  
  36. solve(v, src);
  37.  
  38. dp[src] = max({dp[v] + val[src], dp[src]});
  39. }
  40.  
  41. return;
  42. };
  43.  
  44. solve(1, -1);
  45.  
  46. cout << dp[1] << endl;
  47.  
  48. executeTime();
  49. return 0;
  50. }
Success #stdin #stdout #stderr 0s 5316KB
stdin
5
1 2 
1 5
2 3
3 4
5 7 -10 4 15
stdout
20
stderr
Time Taken: 0.004538 secs