Pagini recente » Cod sursa (job #3177578) | Cod sursa (job #2244272) | Cod sursa (job #2817708) | Cod sursa (job #494723) | Cod sursa (job #2507287)
fi = open("asmax.in", "r")
fo = open("asmax.out", "w")
viz = [None] * 16005
dp = [None] * 16005
val = [None] * 16005
G = [[] for i in range(1, 16005)]
def citeste():
ret = fi.readline().split()
ret = list(map(int, ret))
return ret
def dfs(nod):
#print(nod)
viz[nod] = 1
dp[nod] = val[nod - 1]
for v in G[nod]:
if not viz[v]:
dfs(v)
if dp[v] > 0:
dp[nod] += dp[v]
n = citeste()[0]
val = citeste()
for i in range(0, n - 1):
u, v = citeste()
G[u].append(v)
G[v].append(u)
dfs(1)
ans = -1005
for i in range(1, n + 1):
ans = max(ans, dp[i])
fo.write(str(ans))
fi.close()
fo.close()