Pagini recente » Cod sursa (job #1845709) | Cod sursa (job #995692) | Cod sursa (job #1025223) | Cod sursa (job #2615216) | Cod sursa (job #2119158)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int val[16005];
vector <int> mv[16005];
int viz[16005],dp[16005];
int dinamica(int x){
int i,y;
viz[x]=1;
dp[x]=val[x];
for(i=0;i<mv[x].size();i++){
y=mv[x][i];
if(!viz[y]){
dp[x]+=dinamica(y);
}
}
if(dp[x]<0)
return 0;
return dp[x];
}
int main(){
int n,i,x,y;
fin>>n;
for(i=1;i<=n;i++)
fin>>val[i];
for(i=1;i<n;i++){
fin>>x>>y;
mv[x].push_back(y);
mv[y].push_back(x);
}
dinamica(1);
int maxv=INT_MIN;
for(i=1;i<=n;i++)
if(dp[i]>maxv)
maxv=dp[i];
fout<<maxv;
return 0;
}