Pagini recente » Cod sursa (job #1917939) | Cod sursa (job #222467) | Cod sursa (job #357812) | Cod sursa (job #2004561) | Cod sursa (job #1258381)
#include<fstream>
#include<vector>
#include<iostream>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
vector<int> v[16009];
int sol[16009],viz[16009],n,val[16009],maxim = -9999999;
void dfs(int nod)
{
bool ok = false;
viz[nod] = 1;
sol[nod] = val[nod];
for(int i = 0 ; i < v[nod].size() ; i++)
{
if(!viz[v[nod][i]]){
ok = true;
dfs(v[nod][i]);
sol[nod] = max(sol[nod]+sol[v[nod][i]],sol[nod]);
maxim = max(maxim,sol[nod]);
}
}
if(!ok)
sol[nod] = val[nod];
}
int main()
{
in>>n;
for(int i = 1 ; i <= n ; i++)
in>>val[i];
int a,b;
for(int i = 1 ; i < n ; i++){
in>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
dfs(1);
out<<maxim;
return 0;
}