func_code_string: #include <bits/stdc++.h>   using namespace std;   inline int setBit(int N, int pos) { return N = N | (1 << pos); }   inline int resetBit(int N, int pos) { return N = N & ~(1 << pos); }   inline bool checkBit(int N, int pos) { return (bool)(N & (1 << pos)); }   const long long MAX = 300005;   int n;   vector<int> graph[MAX];   struct data {     int k;     long long x;   };   vector<data> qrList[MAX];   long long ans[MAX], what[MAX], levelDel[MAX];   void dfs(int u, int l = 0, long long tot = 0, int par = -1) {     for (data &p : qrList[u]) {       tot += p.x;       if (l + p.k + 1 <= n) levelDel[l + p.k + 1] += p.x;     }     tot -= levelDel[l];     ans[u] = tot;     for (int &v : graph[u]) {       if (v == par) continue;       dfs(v, l + 1, tot, u);     }     for (data &p : qrList[u]) {       tot -= p.x;       if (l + p.k + 1 <= n) levelDel[l + p.k + 1] -= p.x;     }   }   int main() {     int i, u, v, q, k;     long long x;     scanf( %d , &n);     for (i = 0; i < n - 1; i++) {       scanf( %d %d , &u, &v);       u--, v--;       graph[u].push_back(v);       graph[v].push_back(u);     }     scanf( %d , &q);     while (q--) {       scanf( %d %d , &u, &k);       scanf( %lld , &x);       u--;       qrList[u].push_back({k, x});     }     dfs(0);     for (i = 0; i < n; i++) printf( %lld  , ans[i]);     puts(  );     return 0;   }   