Pagini recente » Istoria paginii runda/simulareg_2 | Cod sursa (job #867969) | Cod sursa (job #2488684) | Cod sursa (job #334037) | Cod sursa (job #1258379)
#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;
cout<<nod<<"\n";
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]],val[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;
}