Pagini recente » Cod sursa (job #1034230) | Cod sursa (job #2098286) | Cod sursa (job #1961934) | Cod sursa (job #1701401) | Cod sursa (job #1768163)
#include<iostream>
#include<fstream>
#include<vector>
#define NMax 16005
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int N,Sol;
int C[NMax],SMax[NMax];
bool Use[NMax];
vector <int> V[NMax];
void Read()
{
fin>>N;
for(int i = 1 ; i <= N ; ++i)
fin>>C[i];
for(int i = 1 ; i <= N - 1 ; ++i)
{
int a,b; fin>>a,b;
V[a].push_back(b);
V[b].push_back(a);
}
}
void DFS(int nod)
{
Use[Nod] = 1;
SMax[Nod] = C[Nod];
for(int i = 0 ; i < V[nod].size() ; ++i)
{
int Vecin = V[nod][i];
if(!Use[Vecin])
{
DFS(Vecin);
SMax[Nod] = max(SMax[Nod],SMax[Nod] + SMax[Vecin]);
}
}
Sol = max(Sol,SMax[Nod]);
}
void Print()
{
fout<<Sol<<"\n";
}
int main()
{
Read();
DFS(1);
Print();
return 0;
}