#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
const int MOD = pow(10,9)+7;
const int MOD2 = 998244353;
const int INF = LLONG_MAX/2;
int primes[1000000];
void seive(){
fill(primes, primes + 1000000, 1);
primes[0] = primes[1] = 0;
for(int i = 2 ; i*i < 1000000 ; i++){
if(primes[i]){
for(int j = i*i ; j < 1000000 ; j += i){
primes[j] = 0;
}
}
}
for(int i = 1 ; i < 1000000 ; i++){
primes[i] += primes[i-1];
}
}
int factorial(int n){
if(n==0){
return 1;
}
return (n*(factorial(n-1)))%MOD;
}
bool isPrime(int n){
if(n <= 1) return false;
for(int i = 2 ; i*i <= n ; i++){
if(n % i == 0) return false;
}
return true;
}
int power(int a, int b){
if(b == 0) return 1;
a %= MOD;
int value = power(a, b / 2);
if(b % 2 == 0){
return (value * value) % MOD;
} else {
return ((value * value) % MOD * (a % MOD)) % MOD;
}
}
int gcd(int a, int b){
if(a == 0) return b;
return gcd(b % a, a);
}
void dfs(int node , vector<int>A[] , int visited[] , int sum[] , int parent[] , int values[]){
visited[node] = 1;
for(auto node1 : A[node]){
if(!visited[node1]){
parent[node1] = node;
dfs(node1,A,visited,sum,parent,values);
}
}
int s = 0;
for(auto node1 : A[node]){
if(parent[node]!=node1){
s = max(s,sum[node1]);
}
}
sum[node] = values[node]+s;
}
void solve() {
int n1;
cin>>n1;
vector<int>A[n1+1];
int visited[n1+1] = {0};
int values[n1+1] = {0};
int sum[n1+1] = {0};
int parent[n1+1] = {0};
for(int i = 0 ; i<n1-1 ; i++){
int a,b;
cin>>a>>b;
A[a].push_back(b);
A[b].push_back(a);
}
for(int i = 1 ; i<n1+1 ; i++){
cin>>values[i];
}
dfs(1,A,visited,sum,parent,values);
int maxi = INT_MIN;
for(int i = 1 ; i<=n1 ; i++){
maxi = max(maxi,sum[i]);
}
cout<<maxi<<endl;
}
signed main(){
ios::sync_with_stdio(false); cin.tie(NULL);
//int t;
//cin >> t;
//while(t--){
solve();
//}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBlbmRsICdcbicKI2RlZmluZSBpbnQgbG9uZyBsb25nCmNvbnN0IGludCBNT0QgPSBwb3coMTAsOSkrNzsKY29uc3QgaW50IE1PRDIgPSA5OTgyNDQzNTM7CmNvbnN0IGludCBJTkYgPSBMTE9OR19NQVgvMjsKIAppbnQgcHJpbWVzWzEwMDAwMDBdOwogCnZvaWQgc2VpdmUoKXsKICAgIGZpbGwocHJpbWVzLCBwcmltZXMgKyAxMDAwMDAwLCAxKTsKICAgIHByaW1lc1swXSA9IHByaW1lc1sxXSA9IDA7CiAgICBmb3IoaW50IGkgPSAyIDsgaSppIDwgMTAwMDAwMCA7IGkrKyl7CiAgICAgICAgaWYocHJpbWVzW2ldKXsKICAgICAgICAgICAgZm9yKGludCBqID0gaSppIDsgaiA8IDEwMDAwMDAgOyBqICs9IGkpewogICAgICAgICAgICAgICAgcHJpbWVzW2pdID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGZvcihpbnQgaSA9IDEgOyBpIDwgMTAwMDAwMCA7IGkrKyl7CiAgICAgICAgcHJpbWVzW2ldICs9IHByaW1lc1tpLTFdOwogICAgfQp9CmludCBmYWN0b3JpYWwoaW50IG4pewogICAgaWYobj09MCl7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICByZXR1cm4gKG4qKGZhY3RvcmlhbChuLTEpKSklTU9EOwp9CmJvb2wgaXNQcmltZShpbnQgbil7CiAgICBpZihuIDw9IDEpIHJldHVybiBmYWxzZTsKICAgIGZvcihpbnQgaSA9IDIgOyBpKmkgPD0gbiA7IGkrKyl7CiAgICAgICAgaWYobiAlIGkgPT0gMCkgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRydWU7Cn0KIAppbnQgcG93ZXIoaW50IGEsIGludCBiKXsKICAgIGlmKGIgPT0gMCkgcmV0dXJuIDE7CiAgICBhICU9IE1PRDsKICAgIGludCB2YWx1ZSA9IHBvd2VyKGEsIGIgLyAyKTsKICAgIGlmKGIgJSAyID09IDApewogICAgICAgIHJldHVybiAodmFsdWUgKiB2YWx1ZSkgJSBNT0Q7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAoKHZhbHVlICogdmFsdWUpICUgTU9EICogKGEgJSBNT0QpKSAlIE1PRDsKICAgIH0KfQogCmludCBnY2QoaW50IGEsIGludCBiKXsKICAgIGlmKGEgPT0gMCkgcmV0dXJuIGI7CiAgICByZXR1cm4gZ2NkKGIgJSBhLCBhKTsKfQp2b2lkIGRmcyhpbnQgbm9kZSAsIHZlY3RvcjxpbnQ+QVtdICwgaW50IHZpc2l0ZWRbXSAsIGludCBzdW1bXSAsIGludCBwYXJlbnRbXSAsIGludCB2YWx1ZXNbXSl7CiAgICB2aXNpdGVkW25vZGVdID0gMTsKICAgIGZvcihhdXRvIG5vZGUxIDogQVtub2RlXSl7CiAgICAgICAgaWYoIXZpc2l0ZWRbbm9kZTFdKXsKICAgICAgICAgICAgcGFyZW50W25vZGUxXSA9IG5vZGU7CiAgICAgICAgICAgIGRmcyhub2RlMSxBLHZpc2l0ZWQsc3VtLHBhcmVudCx2YWx1ZXMpOwogICAgICAgIH0KICAgIH0KICAgIGludCBzID0gMDsKICAgIGZvcihhdXRvIG5vZGUxIDogQVtub2RlXSl7CiAgICAgICAgaWYocGFyZW50W25vZGVdIT1ub2RlMSl7CiAgICAgICAgICAgIHMgPSBtYXgocyxzdW1bbm9kZTFdKTsKICAgICAgICB9CiAgICB9CiAgICBzdW1bbm9kZV0gPSB2YWx1ZXNbbm9kZV0rczsKfQp2b2lkIHNvbHZlKCkgewogICAgaW50IG4xOwogICAgY2luPj5uMTsKICAgIHZlY3RvcjxpbnQ+QVtuMSsxXTsKICAgIGludCB2aXNpdGVkW24xKzFdID0gezB9OwogICAgaW50IHZhbHVlc1tuMSsxXSA9IHswfTsKICAgIGludCBzdW1bbjErMV0gPSB7MH07CiAgICBpbnQgcGFyZW50W24xKzFdID0gezB9OwogICAgZm9yKGludCBpID0gMCA7IGk8bjEtMSA7IGkrKyl7CiAgICAgICAgaW50IGEsYjsKICAgICAgICBjaW4+PmE+PmI7CiAgICAgICAgQVthXS5wdXNoX2JhY2soYik7CiAgICAgICAgQVtiXS5wdXNoX2JhY2soYSk7CiAgICB9CiAgICBmb3IoaW50IGkgPSAxIDsgaTxuMSsxIDsgaSsrKXsKICAgICAgICBjaW4+PnZhbHVlc1tpXTsKICAgIH0KICAgIGRmcygxLEEsdmlzaXRlZCxzdW0scGFyZW50LHZhbHVlcyk7CiAgICBpbnQgbWF4aSA9IElOVF9NSU47CiAgICBmb3IoaW50IGkgPSAxIDsgaTw9bjEgOyBpKyspewogICAgICAgIG1heGkgPSBtYXgobWF4aSxzdW1baV0pOwogICAgfQogICAgY291dDw8bWF4aTw8ZW5kbDsKfQogCnNpZ25lZCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoTlVMTCk7CiAgICAvL2ludCB0OwogICAgLy9jaW4gPj4gdDsKICAgIC8vd2hpbGUodC0tKXsKICAgICAgICBzb2x2ZSgpOwogICAgLy99CiAgICByZXR1cm4gMDsKfQ==