#include <bits/stdc++.h>
using namespace std;
int n, q;
long long int d[100000000];
struct edge {
  int to;
  int cost;
};
void dfs(int a, const vector<vector<edge> >& v, int b) {
  d[a - 1] += b;
  for (int i = 0; i < v[a - 1].size(); i++) {
    dfs(v[a - 1][i].to, v, d[a - 1]);
  }
}
int main() {
  cin >> n >> q;
  vector<vector<edge> > tree(n);
  for (int i = 0; i < n - 1; i++) {
    int a, b;
    cin >> a >> b;
    edge e = {b, 0};
    tree[a - 1].emplace_back(e);
  }
  for (int i = 0; i < q; i++) {
    int a, b;
    cin >> a >> b;
    d[a - 1] += b;
  }
  dfs(1, tree, 0);
  for (int i = 0; i < n; i++) {
    cout << d[i] << endl;
  }
  return 0;
}
