Pagini recente » Cod sursa (job #1671300) | Cod sursa (job #866378) | Cod sursa (job #667211) | Cod sursa (job #1151159) | Cod sursa (job #3159089)
#include <bits/stdc++.h>
using namespace std;
int n;
int val[16005];
vector<int> adj[16005];
int ans = -2e9;
ifstream fin ("asmax.in");
ofstream fout ("asmax.out");
void DFS(int nod, int parent) {
for (int i : adj[nod])
if(i != parent) {
DFS(i, nod);
if (val[i] > 0)
val[nod] += val[i];
}
ans = max(ans, val[nod]);
}
int main()
{
fin >> n;
for (int i = 1; i <= n; i++)
fin >> val[i];
for (int i = 1; i < n; i++) {
int x, y;
fin >> x >> y;
adj[x].push_back(y);
adj[y].push_back(x);
}
DFS(1, 0);
fout << ans << "\n";
return 0;
}