Pagini recente » Cod sursa (job #675288) | Cod sursa (job #2878441) | Cod sursa (job #614987) | Cod sursa (job #680805) | Cod sursa (job #578559)
Cod sursa(job #578559)
#include<stdio.h>
#include<vector>
using namespace std;;
const int N_MAX = 16010;
int n;
vector<int> v[N_MAX];
int a[N_MAX], costg[N_MAX],sol=-1000;
bool g[N_MAX];
void dfs(int varf)
{
int i, cost = 0;
g[varf] = 1;
for(i=0;i<v[varf].size();++i)
{
if(!g[v[varf][i]])
{
dfs(v[varf][i]);
if(costg[v[varf][i]]>0)
cost+=costg[v[varf][i]];
}
}
costg[varf] = a[varf]+cost;
if(sol < costg[varf])
sol = costg[varf];
}
int main()
{
int i,x,y;
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
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", sol);
return 0;
}