import sys sys.setrecursionlimit(10**6) def M():return map(int,input().split()) n=int(input()) a=list(M()) b=list(M()) G=[[]for i in range(n)] for i in range(n-1):u,v=M();G[u-1].append(v-1);G[v-1].append(u-1) d=[[0]*2for i in range(n)] def f(u,p): d[u][0]=a[u] for v in G[u]: if v!=p:f(v,u);d[u][0]+=max(d[v][0],d[v][1]);d[u][1]+=max(d[v][0],d[v][1]+b[u]+b[v]) return f(0,-1) print(max(d[0]))