Pagini recente » Cod sursa (job #230269) | Cod sursa (job #1538277) | Cod sursa (job #1285426) | Cod sursa (job #3181794) | Cod sursa (job #1418884)
#include <iostream>
#include <fstream>
#define NMax 16001
#include <vector>
using namespace std;
int N;
vector<int> V[NMax];
int Val[NMax],Uz[32003],Sum[32003],Max=-1001;
ifstream g("asmax.in");
ofstream f("asmax.out");
void Citire()
{
g>>N;
int x,y;
for(int i=1;i<=N;i++)
g>>Val[i];
for(int k=0;k<N-1;k++)
{
g>>x>>y;
V[x].push_back(y);
V[y].push_back(x);
}
}
void DFS(int x)
{
Uz[x]=1;
vector<int>::iterator it;
for(it=V[x].begin();it!=V[x].end();it++)
{
if(Uz[*it]==0)
{
DFS(*it);
Val[x]=max(Val[x],Val[x]+Val[*it]);
}
}
Max=max(Max,Val[x]);
}
int main()
{
Citire();
DFS(1);
f<<Max;
}