#include <bits/stdc++.h>
using namespace std;
int main() {
int n ;
cin>>n ;
int b[n+1] = {0};
vector <int> G[n+1];
int i = 1 ;
while(i<=n-1){
int x,y ;
cin>>x>>y ;
G[x].push_back(y);
G[y].push_back(x);
i++;
}
i = 1 ;
while(i<=n){
cin>>b[i];
i++;
}
queue <int> q ;
int used[n+1] = {0};
used[1] = 1 ;
q.push(1);
int answer[n+1] = {0};
answer[1] = b[1] ;
while(!q.empty()){
int top = q.front();
q.pop();
int c = 0 ;
for(auto u : G[top]){
if(used[u]==0){
c++;
used[u] = 1 ;
q.push(u);
answer[u] = b[u]+ answer[top];
}
else{
}
}
}
i = 1 ;
while(i<=n){
cout<<answer[i];
cout<<'\n';
i++;
}
return 0 ;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIAogICAgCiAgICBpbnQgbiA7IAogICAgY2luPj5uIDsgCiAgICBpbnQgYltuKzFdID0gezB9OwogICAgCiAgICB2ZWN0b3IgPGludD4gR1tuKzFdOwogICAgaW50IGkgPSAxIDsgCiAgICB3aGlsZShpPD1uLTEpewogICAgICAgIGludCB4LHkgOyAKICAgICAgICBjaW4+Png+PnkgOwogICAgICAgIEdbeF0ucHVzaF9iYWNrKHkpOwogICAgICAgIEdbeV0ucHVzaF9iYWNrKHgpOwogICAgICAgIGkrKzsKICAgIH0KICAgIAogICAgaSA9IDEgOyAKICAgIHdoaWxlKGk8PW4pewogICAgCWNpbj4+YltpXTsKICAgIAlpKys7CiAgICB9CiAgICAKICAgIHF1ZXVlIDxpbnQ+IHEgOyAKICAgIGludCB1c2VkW24rMV0gPSB7MH07CiAgICB1c2VkWzFdID0gMSA7IAogICAgcS5wdXNoKDEpOwogICAgaW50IGFuc3dlcltuKzFdID0gezB9OyAKICAgIGFuc3dlclsxXSA9IGJbMV0gOyAKICAgIHdoaWxlKCFxLmVtcHR5KCkpewogICAgICAgIAogICAgICAgIGludCB0b3AgPSBxLmZyb250KCk7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBpbnQgYyA9IDAgOyAKICAgICAgICBmb3IoYXV0byB1IDogR1t0b3BdKXsKICAgICAgICAgICAgaWYodXNlZFt1XT09MCl7CiAgICAgICAgICAgICAgICBjKys7CiAgICAgICAgICAgICAgICB1c2VkW3VdID0gMSA7IAogICAgICAgICAgICAgICAgcS5wdXNoKHUpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBhbnN3ZXJbdV0gPSBiW3VdKyBhbnN3ZXJbdG9wXTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgCiAgICB9CiAgICBpID0gMSA7IAogICAgd2hpbGUoaTw9bil7CiAgICAJY291dDw8YW5zd2VyW2ldOwogICAgCWNvdXQ8PCdcbic7CiAgICAJaSsrOwogICAgfQogICAgCiAgICAKICAgIAogICAgCiAgICByZXR1cm4gMCA7IAp9