Pagini recente » Cod sursa (job #1150719) | Cod sursa (job #540733) | Cod sursa (job #3215325) | Cod sursa (job #1523511) | Cod sursa (job #2565499)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
const int INF = -1000000005;
const int DIM = 16005;
vector <int> G[DIM];
int n,x,y,Cost[DIM],ans=INF,viz[DIM];
void Read()
{
fin>>n;
for(int i=1;i<=n;i++)
fin>>Cost[i];
for(int i=1;i<n;i++)
{
fin>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
}
void DFS(int nod)
{
viz[nod]=1;
vector <int> ::iterator it;
for(it=G[nod].begin();it!=G[nod].end();it++)
{
if(!viz[*it])
{
DFS(*it);
if(Cost[*it]>0)
Cost[nod]+=Cost[*it];
}
}
ans=max(ans,Cost[nod]);
}
int main()
{
Read();
DFS(1);
fout<<ans<<'\n';
}