Pagini recente » Cod sursa (job #2334433) | Cod sursa (job #555964) | Cod sursa (job #2009589) | Cod sursa (job #520744) | Cod sursa (job #183091)
Cod sursa(job #183091)
#include <cstdio>
#include <vector>
using namespace std;
long n,i,j,a,b,viz[16100],c[16100],mx;
vector <long> v[16100];
void df(long x)
{
long i,j,nr;
viz[x]=1;
nr=v[x].size();
if (nr>0)
for (i=0;i<nr;i++)
{
if (viz[v[x][i]]==0)
{
// printf("%d ",v[x][i]);
df(v[x][i]);
// printf("%d %d \n",x,c[v[x][i]]);
if (c[v[x][i]]>0)
c[x]+=c[v[x][i]];
}
}
if (c[x]>mx)
mx=c[x];
}
int main(){
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;i++)
scanf("%d",&c[i]);
for (i=1;i<=n-1;i++)
{
scanf("%d%d",&a,&b);
v[a].push_back(b);
v[b].push_back(a);
}
mx=-(1<<30);
df(1);
printf("%d\n",mx);
return 0;
}