Pagini recente » Cod sursa (job #475651) | Cod sursa (job #652627) | Cod sursa (job #324553) | Cod sursa (job #740122) | Cod sursa (job #2116047)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int dp[16001],v[16001],smax=-999999999,n,p,r,viz[16001];
vector<int> ad[16001];
void radacinare(int x)
{
dp[x]=0;
viz[x]=1;
for(int y=0;y<ad[x].size();y++)
{
if(viz[ad[x][y]]==0)
{
radacinare(ad[x][y]);
dp[x]=dp[x]+max(0,dp[ad[x][y]]);
}
}
dp[x]=dp[x]+v[x];
smax=max(dp[x],smax);
}
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);
fout<<smax;
return 0;
}