#include<bits/stdc++.h>
using namespace std;
const int Maxn=2*1e5;
int n,q,t,v;
int to[Maxn<<1],head[Maxn<<1],net[Maxn],tot;
int pre[Maxn+10],val[Maxn];
int a,b;
void add(int u,int v)
{
to[++tot]=v;
net[tot]=head[u];
head[u]=tot;
}
void dfs(int now)
{
for(int i=head[now];i;i=net[i])
{
pre[to[i]]=val[to[i]]+pre[now];
dfs(to[i]);
}
}
int main()
{
cin>>n>>q;
for(int i=1;i<n;i++)
{
cin>>a>>b;
add(a,b);
}
for(int i=1;i<=q;i++)
{
cin>>t>>v;
val[t]+=v;
}
pre[1]=val[1];
dfs(1);
for(int i=1;i<=n;i++)
cout<<pre[i]<<" ";
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int Maxn=2*1e5;
int n,q,t,v;
vector<int> a[Maxn<<1];
int pre[Maxn+10];
int aa,b;
void dfs(int now,int fa)
{
pre[now]+=pre[fa];
for(int i=0;i<a[now].size();i++)
if(a[now][i]!=fa)
dfs(a[now][i],now);
}
int main()
{
cin>>n>>q;
for(int i=1;i<n;i++)
{
cin>>aa>>b;
a[aa].push_back(b);
a[b].push_back(aa);
}
for(int i=1;i<=q;i++)
{
cin>>t>>v;
pre[t]+=v;
}
dfs(1,0);
for(int i=1;i<=n;i++)
cout<<pre[i]<<" ";
return 0;
}
求助大佬们