Pagini recente » Cod sursa (job #2645127) | Cod sursa (job #2777959) | Cod sursa (job #1019583) | Cod sursa (job #2688622) | Cod sursa (job #2115899)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int dp[16001],v[16001],maxx=-999999999,n,p,r;
vector<int> ad[16001];
void radacinare(int x)
{
if(ad[x].size()==0)
dp[x]=v[x];
else
for(int y=1;y<ad[x].size();y++)
{
radacinare(ad[x][y]);
dp[x]=v[x]+max(0,dp[ad[x][y]]);
}
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>v[i];
}
for(int i=1;i<=n-1;i++)
{
fin>>p>>r;
ad[p].push_back(r);
ad[r].push_back(p);
}
radacinare(1);
for(int i=1;i<=n;i++)
if(dp[i]>maxx)maxx=dp[i];
fout<<maxx;
return 0;
}