Pagini recente » Cod sursa (job #227741) | Cod sursa (job #2103879) | Cod sursa (job #2831009) | Cod sursa (job #1792429) | Cod sursa (job #2242085)
#include <bits/stdc++.h>
#define pb push_back
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector <int> v[16009];
bool viz[16009];
int n,i,s,smax,cost[16009],x,y,sol[16009];
void dfs(int nod)
{
int i;
viz[nod]=1;
sol[nod]+=cost[nod];
for(i=0;i<v[nod].size();i++)
{
if(viz[v[nod][i]]==0)
{
dfs(v[nod][i]);
if(sol[v[nod][i]]>0)sol[nod]+=sol[v[nod][i]];
}
}
}
int main()
{
fin>>n;
for(i=1;i<=n;i++)
fin>>cost[i];
for(i=1;i<=n;i++)
{
fin>>x>>y;
v[x].pb(y);
v[y].pb(x);
}
smax=INT_MIN;
dfs(1);
for(i=1;i<=n;i++)
smax=max(sol[i],smax);
fout<<smax;
return 0;
}