Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. #include <cmath>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <iostream>
  5. #include <algorithm>
  6. #include <set>
  7. #include <queue>
  8. #include <iomanip>
  9. #include <tuple>
  10. #include <unordered_set>
  11. #include <unordered_map>
  12.  
  13. using namespace std;
  14.  
  15. void dfs(vector<vector<int>>& graph, int curr, vector<int>& currSum, int currentSum, vector<int>& addedValues) {
  16. currSum[curr] += currentSum;
  17. for (auto vertex : graph[curr]) {
  18.  
  19. dfs(graph, vertex, currSum, currentSum + addedValues[vertex], addedValues);
  20. }
  21. }
  22.  
  23. int main() {
  24. int n, q;
  25. cin >> n >> q;
  26.  
  27. vector<vector<int>> graph(n + 1);
  28. vector<int> addedValues(n + 1);
  29.  
  30. for (int i = 0; i < n - 1; i++) {
  31. int a, b;
  32. cin >> a >> b;
  33. graph[a].push_back(b);
  34. }
  35.  
  36. for (int i = 0; i < q; i++) {
  37. int root, val;
  38. cin >> root >> val;
  39. addedValues[root] += val;
  40. }
  41.  
  42. vector<int> sums(n + 1);
  43.  
  44. dfs(graph, 1, sums, addedValues[1], addedValues);
  45.  
  46. for (int i = 1; i <= n; i++) {
  47. cout << sums[i] << " ";
  48. }
  49.  
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement