Pagini recente » Cod sursa (job #2534589) | Cod sursa (job #1017799) | Cod sursa (job #27890) | Cod sursa (job #2764064) | Cod sursa (job #2045953)
#include <iostream>
#include <fstream>
#include <vector>
#define MAX 16005
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n,sol;
int cost[MAX];
vector<int> graf[MAX];
bool vizitat[MAX];
void init()
{
f >>n ;
for(int i=1; i<=n; i++)
{
f >> cost[i];
}
for(int i=0; i<n-1; i++)
{
int a,b;
f >> a >> b;
graf[a].push_back(b);
graf[b].push_back(a);
}
}
int rez(int nod)
{
if(!vizitat[nod])
{
vizitat[nod] = 1;
for(auto i : graf[nod])
{
if(!vizitat[i])
{
cost[nod] = max(cost[nod], cost[nod] + rez(i));
}
}
}
sol = max(sol, cost[nod]);
return cost[nod];
}
int main()
{
init();
rez(1);
g << sol;
return 0;
}