Pagini recente » Cod sursa (job #1373597) | Cod sursa (job #2314492) | Cod sursa (job #2615058) | Cod sursa (job #2593865) | Cod sursa (job #2762561)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("asmax.in");
ofstream g ("asmax.out");
int n;
int val[100005];
vector <int > a[100005];
int dp[100005];
int maxim;
void Dfs(int nod , int parinte)
{
dp[nod]=val[nod];
for(int x=0 ; x<a[nod].size();++x)
{
if(a[nod][x]!=parinte)
{
Dfs(a[nod][x] , nod);
if(dp[a[nod][x]]>0)
dp[nod]+=dp[a[nod][x]];
}
}
}
int main()
{
f>>n;
for(int i=1;i<=n;++i)
f>>val[i];
for(int i=1;i<n;++i)
{
int x , y;
f>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
}
Dfs(1 , 1);
for(int i=1;i<=n;++i)
maxim=max(maxim , dp[i]);
g<<maxim;
return 0;
}