Pagini recente » Cod sursa (job #1429468) | Cod sursa (job #154299) | Cod sursa (job #1193457) | Cod sursa (job #1604773) | Cod sursa (job #2954869)
#include<fstream>
#include<vector>
using namespace std;
ifstream cin("asmax.in");
ofstream cout("asmax.out");
vector <int> a[16001];
int sume[16001],v[16001],maxi=-99999999;
void dfs(int nod){
v[nod]=1;
for(int i=0;i<a[nod].size();i++){
int vecin=a[nod][i];
if(!v[vecin]){
dfs(vecin);
sume[nod]=max(sume[nod],sume[nod]+sume[vecin]);
if(sume[nod]>maxi)
maxi=sume[nod];
}
}
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>sume[i];
for(int i=1;i<n;i++){
int x,y;
cin>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
}
dfs(1);
cout<<maxi;
}