Pagini recente » Cod sursa (job #68910) | Borderou de evaluare (job #1900372) | Cod sursa (job #550762) | Cod sursa (job #217243) | Cod sursa (job #468927)
Cod sursa(job #468927)
#include <stdio.h>
#include <vector>
#define nm 16002
using namespace std;
vector<int> v[nm];
int n, a[nm], c[nm], viz[nm], sol = -1000;
void dfs(int nod)
{
int i, temp=0;
viz[nod]=1;
for(i=0; i<v[nod].size(); ++i)
{
if(!viz[v[nod][i]])
{
dfs(v[nod][i]);
if(c[v[nod][i]]>0)
temp+=c[v[nod][i]];
}
}
c[nod]=a[nod]+temp;
if(sol<c[nod])
sol=c[nod];
}
int main()
{
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
int i, x, y;
scanf("%d", &n);
for(i=1;i<=n;++i)
{
scanf("%d", &a[i]);
}
for(i=1;i<n;++i)
{
scanf("%d%d", &x, &y);
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1);
printf("%d\n", sol);
return 0;
}