Pagini recente » Cod sursa (job #2674094) | Cod sursa (job #2681511) | Cod sursa (job #1615888) | Cod sursa (job #2519195) | Cod sursa (job #2263524)
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector <int> G[16005];
int N,V[16005],DP[16005],Max=-200000000;
int DFS(int Nod,int Tata){
for(auto i : G[Nod])
if(i==Tata)
continue;
else{
DFS(i,Nod);
DP[Nod]=max(DP[Nod],DP[Nod]+DP[i]);
}
}
int main(){
fin>>N;
for(int i=1;i<=N;i++){
fin>>V[i];
DP[i]=V[i];
}
for(int i=1;i<N;i++){
int X,Y;
fin>>X>>Y;
G[X].push_back(Y);
G[Y].push_back(X);
}
DFS(1,0);
for(int i=1;i<=N;i++)
Max=max(Max,DP[i]);
fout<<Max<<'\n';
return 0;
}