Pagini recente » Cod sursa (job #1897888) | Cod sursa (job #2404007) | Cod sursa (job #1444326) | Cod sursa (job #2948958) | Cod sursa (job #2929659)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
const int NMAX=16005;
long long sp[NMAX];
int cost[NMAX];
bool viz[NMAX];
vector<int>v[NMAX];
void dfs(int p)
{
viz[p]=1;
sp[p]=cost[p];
for(auto i:v[p])
{
if(!viz[i])
{
dfs(i);
sp[p]=max(sp[p],sp[p]+sp[i]);
}
}
}
int main()
{
int n,i,j,x,y;
long long maxi=-2e9;
fin>>n;
for(i=1;i<=n;i++)
fin>>cost[i];
for(i=1;i<n;i++)
{
fin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1);
for(i=1;i<=n;i++)
maxi=max(maxi,sp[i]);
fout<<maxi;
return 0;
}