func_code_string: #include <bits/stdc++.h>   using namespace std;   long long n, x, y, num[100005], res, a[100005], b[100005];   bool vis[100005];   vector<int> v[100005];   void dfs(long long now, long long pre) {     for (long long i = 0; i < v[now].size(); i++) {       int j = v[now][i];       if (j != pre) {         dfs(j, now);         a[now] = max(a[now], a[j]);         b[now] = max(b[now], b[j]);       }     }     num[now] += a[now];     num[now] -= b[now];     if (num[now] < 0)       a[now] += -num[now];     else       b[now] += num[now];   }   int main() {     cin >> n;     for (long long i = 0; i < n - 1; i++) {       cin >> x >> y;       v[x].push_back(y);       v[y].push_back(x);     }     for (long long i = 1; i <= n; i++) cin >> num[i];     dfs(1, -1);     res = a[1] + b[1];     cout << res <<   n ;     return 0;   }   