Pagini recente » Cod sursa (job #375453) | Cod sursa (job #1789671) | Cod sursa (job #2663565) | Cod sursa (job #1201240) | Cod sursa (job #579516)
Cod sursa(job #579516)
#include <cstdio>
#include <vector>
#define N 16008
using namespace std;
vector < int > a[N];
int n,val[N],cost[N],sol=-1000000;
bool cupcake[N];
void citire()
{
int i,v,x,y;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&v);
val[i]=v;
}
for(i=1;i<n;i++)
{
scanf("%d%d",&x,&y);
a[x].push_back(y);
a[y].push_back(x);
}
}
void dfs(int x)
{
int i, valoare;
valoare=0;
cupcake[x]=true;
for(i=0;i<a[x].size();i++)
{
int y= a[x][i];
if(!cupcake[y])
{
dfs(y);
if(cost[y]>0)
valoare+=cost[y];
}
}
cost[x]=val[x]+valoare;
if(sol<cost[x])
sol=cost[x];
}
int main()
{
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
citire();
dfs(1);
printf("%d",sol);
return 0;
}