Pagini recente » Cod sursa (job #3178885) | Cod sursa (job #2087888) | Cod sursa (job #829542) | Cod sursa (job #446794) | Cod sursa (job #2672625)
#include <fstream>
#include <vector>
#include <climits>
#define NMAX 16005
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector<int>graph[NMAX];
int val[NMAX];
int n;
void citire(){
f>>n;
for(int i=1; i<=n; i++)
{
f>>val[i];
}
for(int i=1; i<n; i++){
int a, b;
f>>a>>b;
graph[a].push_back(b);
graph[b].push_back(a);
}
}
int smax = INT_MIN;
int viz[NMAX];
int sum(int nod){
int sm = val[nod];
for(auto &v:graph[nod])
if(viz[nod] == 0){
viz[nod] = 1;
sm = max(sm, sm+sum(v));
viz[nod] = 0;
}
if(sm>smax)
smax = sm;
return sm;
}
int main()
{
citire();
sum(1);
g<<smax;
return 0;
}