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.  
  22. vector<int> val(n + 1);
  23.  
  24. for (int i = 1; i <= n; i++) {
  25. cin >> val[i];
  26. }
  27.  
  28. vector<int> dp(n + 1);
  29.  
  30. function<void(int, int)> solve = [&](int src, int p) {
  31.  
  32. dp[src] = 0;
  33.  
  34. for (auto &v : mp[src]) {
  35. if (v == p) continue;
  36.  
  37. solve(v, src);
  38. dp[src] = max(dp[src], dp[v]);
  39. }
  40.  
  41. dp[src] += val[src];
  42.  
  43. return;
  44. };
  45.  
  46. solve(1, -1);
  47.  
  48. for (int i = 1; i <= n; i++) {
  49. cout << dp[i] << endl;
  50. }
  51.  
  52. executeTime();
  53. return 0;
  54. }
Success #stdin #stdout #stderr 0.01s 5320KB
stdin
7
1 2
1 3
2 4
2 5
3 6
6 7
1 2 2 0 3 3 4
stdout
10
5
9
0
3
7
4
stderr
Time Taken: 0.005161 secs