Pagini recente » Cod sursa (job #1758246) | Cod sursa (job #2455792) | Cod sursa (job #2016910) | Cod sursa (job #2715764) | Cod sursa (job #1757667)
#include <fstream>
#include<vector>
#include<climits>
#define Nmax 16005
using namespace std;
ifstream fin ("asmax.in");
ofstream fout("asmax.out");
vector <int> v[Nmax];
int n, k[Nmax], rad, smax=INT_MIN, niv, sol[Nmax];
bool viz[Nmax];
void read(){
int a, b;
fin>>n;
for(int i=1;i<=n;i++)
fin>>k[i];
for(int i=1;i<=n-1;i++){
fin>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
}
void dfs(int rad){
sol[rad]=k[rad];
viz[rad]=1;
for(unsigned int i=0;i<v[rad].size();i++){
if(!viz[v[rad][i]]){
dfs(v[rad][i]);
if(sol[rad]+sol[v[rad][i]]>sol[rad])
sol[rad]+=sol[v[rad][i]];
}
}
smax=max(smax,sol[rad]);
}
int main()
{
read();
dfs(1);
fout<<smax;
return 0;
}