Pagini recente » Cod sursa (job #3276259) | Cod sursa (job #2289286) | Cod sursa (job #2317465) | Cod sursa (job #267690) | Cod sursa (job #2672619)
#include <fstream>
#include <vector>
#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();
g<<sum(1);
return 0;
}