#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main(){
	int n;
	cin>>n;
	
	int m=n-1;
	vector<vector<int>>graph(n);
	int i=1;
	while(i<=m){
		int x,y;
		cin>>x>>y;
		x--,y--;
		
		graph[x].push_back(y);
		graph[y].push_back(x);
		i++;
	}
	
	
	vector<int>value(n);
	for(int i=0;i<n;i++){
		cin>>value[i];
	}
	
	
	int source=0;
	vector<bool>visited(n,false);
	visited[source]=true;
	
	queue<int>q;
	q.push(source);
	
	vector<int>ones(n);
	
	ones[0]=value[0];
	
	while(!q.empty()){
		int parent=q.front();
		q.pop();
		
		for(auto it:graph[parent]){
			if(!visited[it]){
				visited[it]=true;
				q.push(it);
				
				if(value[it]==1){
					ones[it]=ones[parent]+1;
				}
				else{
					ones[it]=ones[parent];
				}
			}
		}
	}
	
	
	for(int i=0;i<n;i++){
		cout<<"Node"<<i+1<<" : "<<ones[i]<<endl;
	}
	return 0;
}