#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
vector<int> adjList[n+1];
vector<int> nodeVal(n+1,0);
vector<int> visited(n+1,0);
vector<int> numberOfOnes(n+1,0);
for(int i=1;i<=n-1;i++){
int x,y;
cin>>x>>y;
adjList[x].push_back(y);
adjList[y].push_back(x);
}
for(int i=1;i<=n;i++){
int val;
cin>>val;
nodeVal[i]=val;
}
visited[1]=1;
queue<int> q;
q.push(1);
numberOfOnes[1]=nodeVal[1];
while(!q.empty()){
int node=q.front();
q.pop();
for(auto child : adjList[node]){
if(visited[child]==0){
q.push(child);
visited[child] = 1;
if(nodeVal[child]==1)
numberOfOnes[child]=numberOfOnes[node]+1;
else
numberOfOnes[child]=numberOfOnes[node];
}
}
}
for(int i=1;i<=n;i++){
cout<<"node "<<i<<" : "<<numberOfOnes[i];
cout<<"\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCWludCBuOwoJY2luPj5uOwoJdmVjdG9yPGludD4gYWRqTGlzdFtuKzFdOwoJdmVjdG9yPGludD4gbm9kZVZhbChuKzEsMCk7Cgl2ZWN0b3I8aW50PiB2aXNpdGVkKG4rMSwwKTsKCXZlY3RvcjxpbnQ+IG51bWJlck9mT25lcyhuKzEsMCk7Cglmb3IoaW50IGk9MTtpPD1uLTE7aSsrKXsKCQlpbnQgeCx5OwoJCWNpbj4+eD4+eTsKCQlhZGpMaXN0W3hdLnB1c2hfYmFjayh5KTsKCQlhZGpMaXN0W3ldLnB1c2hfYmFjayh4KTsKCX0KCWZvcihpbnQgaT0xO2k8PW47aSsrKXsKCQlpbnQgdmFsOwoJCWNpbj4+dmFsOwoJCW5vZGVWYWxbaV09dmFsOwoJfQoJdmlzaXRlZFsxXT0xOwoJcXVldWU8aW50PiBxOwoJcS5wdXNoKDEpOwoJbnVtYmVyT2ZPbmVzWzFdPW5vZGVWYWxbMV07Cgl3aGlsZSghcS5lbXB0eSgpKXsKCQlpbnQgbm9kZT1xLmZyb250KCk7CgkJcS5wb3AoKTsKCQlmb3IoYXV0byBjaGlsZCA6IGFkakxpc3Rbbm9kZV0pewoJCQlpZih2aXNpdGVkW2NoaWxkXT09MCl7CgkJCQlxLnB1c2goY2hpbGQpOwoJCQkJdmlzaXRlZFtjaGlsZF0gPSAxOwoJCQkJaWYobm9kZVZhbFtjaGlsZF09PTEpCgkJCQkJbnVtYmVyT2ZPbmVzW2NoaWxkXT1udW1iZXJPZk9uZXNbbm9kZV0rMTsKCQkJCWVsc2UKCQkJCQludW1iZXJPZk9uZXNbY2hpbGRdPW51bWJlck9mT25lc1tub2RlXTsKCQkJfQoJCX0KCQkJCgl9Cglmb3IoaW50IGk9MTtpPD1uO2krKyl7CgkJY291dDw8Im5vZGUgIjw8aTw8IiA6ICI8PG51bWJlck9mT25lc1tpXTsKCQljb3V0PDwiXG4iOwoJfQoJcmV0dXJuIDA7Cn0=