Pagini recente » Cod sursa (job #2813678) | Cod sursa (job #1656519) | Cod sursa (job #1533682) | Cod sursa (job #2567146) | Cod sursa (job #1769754)
#include<fstream>
#include<vector>
#define NMax 16005
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int N,Sol = -(1<<30);
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 < (int) 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;
}
int main()
{
Read();
DFS(1);
Print();
return 0;
}