#include <bits/stdc++.h>
using namespace std;
map <int , vector<int> > mp;
int main() {
    int n , q,mx=1;
    cin>>n>>q;
    long long int value[2+n]={0};
    n--;
    while(n--){
        int a,b;
        cin>>a>>b;
        if(a!=b)
        mp[a].push_back(b);
        mx=max(mx,b);
    }
    while(q--){
        int p, x; 
        cin>>p>>x;
        value[p]+=x;
    }
    //update value as value of chilren + = value of parent
    int i,j;
    for(i=1; i<=mp.size(); i++){
        for(j=0; j<mp[i].size(); j++){
            value[mp[i][j]]+=value[i];
        }
    }
    //print the values
    for(i=1; i<=mx; i++)
    {
        cout<<value[i]<<" ";
    }
   return 0; 
}