#include "bits/stdc++.h" using namespace std; #define ll long long int N; int a[100010], b[100010]; ll dp[100010][2]; void dfs(const vector> &G, int v, int p = -1) { ll sum0 = a[v], sum1 = 0; for (auto nv : G[v]) { if (nv == p)continue; dfs(G, nv, v); sum0 += max(dp[nv][0], dp[nv][1]); sum1 += max(dp[nv][0], dp[nv][1] + b[v] + b[nv]); } dp[v][0] = sum0, dp[v][1] = sum1; } signed main() { cin >> N; for (int i = 0; i < N; i++)cin >> a[i]; for (int i = 0; i < N; i++)cin >> b[i]; vector>G(N); for (int i = 0; i < N - 1; i++) { int u, v; cin >> u >> v; u--; v--; G[u].push_back(v); G[v].push_back(u); } dfs(G, 0); cout << max(dp[0][0], dp[0][1]) << endl; return 0; }