Pagini recente » Cod sursa (job #2826822) | Cod sursa (job #2551439) | Cod sursa (job #1249298) | Cod sursa (job #2399308) | Cod sursa (job #2322315)
#include <iostream>
#include <fstream>
#include <vector>
#define Nmax 16005
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n, x, y;
int sum[Nmax];
bool vis[Nmax];
vector <int> v[Nmax];
void dfs(int x)
{
vis[x]=1;
for (int i = 0, l=v[x].size(); i < l; i++)
{
int y=v[x][i];
if(vis[y] == 1) continue;
dfs(y);
if(sum[y] >= 0)
sum[x]+=sum[y];
}
}
int main()
{
f >> n;
for (int i = 1; i <= n; i++) f >> sum[i];
for (int i = 2; i <= n; i++)
{
f >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1);
int ans=0;
for (int i = 1; i <= n; i++)
ans=max(ans, sum[i]);
g << ans;
return 0;
}