#include <bits/stdc++.h>
using namespace std;
int n,k;
int d[100010];
vector<int>ve[100010];
bool vis[100010];
int f[100010][22];
int dp[100010][22];
int dfs(int id,int fa){
for (int i = 0 ; i < ve[id].size() ; i++){
int v = ve[id][i];
if(v == fa)continue;
dfs(v,id);
for (int j = 1 ; j <= k ; j ++){
f[id][j] += f[v][j-1];
}
}
}
int dfs2(int id,int fa){
for (int i = 0 ; i < ve[id].size() ; i++){
int v = ve[id][i];
if(v == fa)continue;
dp[v][1]+=dp[id][0];
for (int j = 2 ; j <= k ; j ++){
dp[v][j]+=dp[id][j-1]-f[v][j-2];
}
dfs2(v,id);
}
}
int main(){
cin >> n >> k;
for (int i = 1 ; i <= n-1 ; i ++){
int u,v;
cin >> u >> v;
ve[u].push_back(v);
ve[v].push_back(u);
}
for (int i = 1 ; i <= n ; i ++){
cin >> d[i];
for (int j = 0 ; j <= k ; j ++){
f[i][j] = d[i];
}
}
dfs(1,0);
for (int i = 1 ; i <= n ; i ++){
for (int j = 0 ; j<= k ; j ++){
dp[i][j] = f[i][j];
}
}
dfs2(1,0);
for (int i = 1 ; i <= n ; i ++){
cout << dp[i][k] << endl;
}
return 0;
}