Pagini recente » Cod sursa (job #1697871) | Cod sursa (job #2826152) | Cod sursa (job #1128086) | Cod sursa (job #1568518) | Cod sursa (job #2145367)
#include <bits/stdc++.h>
#define Nmax 16005
using namespace std;
ifstream f ("asmax.in");
ofstream g ("asmax.out");
int n,x,y,m,Max,val[Nmax],i,seen[Nmax];
vector < int > v[Nmax];
inline void read()
{
f >> n;
for(i = 1;i <= n;i++)
f >> val[i];
for(i = 2;i <= n;i++)
{
f >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
}
inline void dfs(int nod)
{
int l = v[nod].size() , s = 0,next_nod;
for(int i = 0;i < l;i++)
{
next_nod = v[nod][i];
if(not seen[next_nod])
{
seen[next_nod] = 1;
dfs(next_nod);
if(val[next_nod] > 0)
s += val[next_nod];
}
}
val[nod] += s;
Max = max(val[nod], Max);
}
int main()
{
read();
Max = val[1];
seen[1] = 1;
dfs(1);
g << Max;
return 0;
}