Pagini recente » Cod sursa (job #2405793) | Cod sursa (job #2444453) | Cod sursa (job #2697729) | Cod sursa (job #1942610) | Cod sursa (job #1604609)
#include <bits/stdc++.h>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
int dp[16005],val[16005],n,mx=-(1<<30);
vector <int> v[16005];
bool viz[16005];
int df(int nod)
{
int nou,i,valo;
viz[nod]=1;
dp[nod]=val[nod];
for(i=0;i<v[nod].size();i++)
if(!viz[v[nod][i]])
{
nou=v[nod][i];
valo=df(nou);
if(valo>0)
{
dp[nod]+=valo;
}
}
mx=max(dp[nod],mx);
return dp[nod];
}
int main()
{int i,a,b;
in>>n;
for(i=1;i<=n;i++)
{
in>>val[i];
}
for(i=1;i<n;i++)
{
in>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
df(1);
out<<mx<<'\n';
return 0;
}