Lang:Python2
Edit12345678910111213141516n = input()pq = [map(int, raw_input().split()) for i in range(n)]e = [[] for i in range(n)]for i in range(n-1):u, v = (int(i) - 1 for i in raw_input().split())e[u].append(v)e[v].append(u)def dfs(u, f):a, b = 0, 0for p, q in [pq[u]] + sorted([dfs(v, u) for v in e[u] if v != f], key = lambda x : -x[1]):if b >= p: b -= p - qelse: a, b = a + p - b, qreturn (a, b)print dfs(0, -1)[0]