Pagini recente » Cod sursa (job #3316367) | Cod sursa (job #95322) | Cod sursa (job #19262) | Cod sursa (job #3333607) | Cod sursa (job #3340941)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector<int> g[16005];
int v[16005], v2[16005];
bool f[16005];
queue<int> q;
int rezolva(int a)
{
if (!f[a])
{
f[a]=1;
int c;
int maxx=0;
for (int i=0; i<g[a].size(); i++)
if (!f[g[a][i]])
{
c=rezolva(g[a][i]);
if (c>0)
maxx+=c;
}
v2[a]=maxx+v[a];
return maxx+v[a];
}
return 0;
}
int main()
{
int n, a, b;
fin>>n;
for (int i=1; i<=n; i++)
fin>>v[i];
for (int i=1; i<=n-1; i++)
{
fin>>a>>b;
g[a].push_back(b);
g[b].push_back(a);
}
int maxx=rezolva(1);
for (int i=2; i<=n; i++)
if (maxx<v2[i])
maxx=v2[i];
fout<<maxx;
return 0;
}