#include<bits/stdc++.h>
#define FL(i,a,b) for(int i=(a);i<=(b);i++)
#define FR(i,a,b) for(int i=(a);i>=(b);i--)
#define ll long long
using namespace std;
const int MAXN = 1e5 + 10;
const int MAXM = 6e6 + 10;
struct node{
int v,nxt;
}e[MAXN<<1];
int l[MAXM],r[MAXM],d[MAXM],t[MAXM];
int top[MAXN],fa[MAXN],head[MAXN],dep[MAXN],son[MAXN],sum[MAXN],x[MAXN],y[MAXN],z[MAXN],ans[MAXN];
int n,m,rt[MAXN],tot=0,maxx,cnt;
void add(int u,int v){
e[++cnt].v=v;
e[cnt].nxt=head[u];
head[u]=cnt;
}
void dfs1(int u){
sum[u]=1;
int maxx=-1;
for(int i=head[u];i;i=e[i].nxt){
if(!dep[e[i].v]){
dep[e[i].v]=dep[u]+1;
fa[e[i].v]=u;
dfs1(e[i].v);
sum[u]+=sum[e[i].v];
if(sum[e[i].v]>maxx) maxx=sum[e[i].v],son[u]=e[i].v;
}
}
}
void dfs2(int u,int topf){
top[u]=topf;
if(!son[u]) return;
dfs2(son[u],topf);
for(int i=head[u];i;i=e[i].nxt){
if(!top[e[i].v]) dfs2(e[i].v,e[i].v);
}
}
int LCA(int u,int v){
while(top[u]!=top[v]){
if(dep[top[u]]<dep[top[v]]) swap(u,v);
u=fa[top[u]];
}
if(dep[u]<dep[v]) return u;
return v;
}
void pushup(int a){
if(d[l[a]]>=d[r[a]]) d[a]=d[l[a]],t[a]=t[l[a]];
else d[a]=d[r[a]],t[a]=t[r[a]];
}
int add(int a,int u,int v,int pos,int val){
if(!a) a=++tot;
if(u==v){
d[a]+=val;
t[a]=u;
return a;
}
int mid=(u+v)>>1;
if(pos<=mid) l[a]=add(l[a],u,mid,pos,val);
else r[a]=add(r[a],mid+1,v,pos,val);
pushup(a);
return a;
}
int merge(int a,int b,int u,int v){
if(!a) return b;
if(!b) return a;
if(u==v){
d[a]+=d[b];
t[a]=u;
return a;
}
int mid=(u+v)>>1;
l[a]=merge(l[a],l[b],u,mid);
r[a]=merge(r[a],r[b],mid+1,v);
pushup(a);
return a;
}
void dfs3(int u){
for(int i=head[u];i;i=e[i].nxt){
if(dep[e[i].v]>dep[u]) dfs3(e[i].v),rt[u]=merge(rt[u],rt[e[i].v],1,maxx);
}
if(d[rt[u]]) ans[u]=t[rt[u]];
}
int main(){
scanf("%d%d",&n,&m);
FL(i,1,n-1){
int u,v;
scanf("%d%d",&u,&v);
add(u,v);
add(v,u);
}
dep[1]=1;
dfs1(1);
dfs2(1,1);
FL(i,1,m){
scanf("%d%d%d",&x[i],&y[i],&z[i]);
maxx=max(maxx,z[i]);
}
FL(i,1,m){
int lca=LCA(x[i],y[i]);
rt[x[i]]=add(rt[x[i]],1,maxx,z[i],1);
rt[y[i]]=add(rt[y[i]],1,maxx,z[i],1);
rt[lca]=add(rt[lca],1,maxx,z[i],-1);
if(fa[lca]) rt[fa[lca]]=add(rt[fa[lca]],1,maxx,z[i],-1);
}
dfs3(1);
FL(i,1,n) printf("%d\n",ans[i]);
return 0;
}