Pagini recente » Cod sursa (job #1294751) | Cod sursa (job #1750397) | Cod sursa (job #265506) | Cod sursa (job #1594592) | Cod sursa (job #1920744)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector <int> v[16001];
int val[16001],n,sum[16001],viz[16001],smax;
void dfs(int nod)
{
viz[nod]=1;
sum[nod]=val[nod];
for(int i=0;i<v[nod].size();i++){
int y=v[nod][i];
if(viz[y]==0){
dfs(y);
if(sum[y]>0)
sum[nod]+=sum[y];
}
}
if(sum[nod]>smax)
smax=sum[nod];
}
int main()
{
f>>n;
for(int i=1;i<=n;i++)
f>>val[i];
int a,b;
for(int i=1;i<n;i++){
f>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
dfs(1);
g<<smax;
return 0;
}