Pagini recente » Cod sursa (job #1686774) | Pictura | Arhiva de probleme | Cod sursa (job #707968) | Cod sursa (job #2247165)
#include<bits/stdc++.h>
#define NMAX 16010
using namespace std;
vector<int>V[NMAX];
int dp[NMAX];
int viz[NMAX];
int a[NMAX];
int n, rs=-10000;
int DFS(int x) {
int v=0;
viz[x]=1;
for (auto it : V[x]) {
if (!viz[it]) {
v+=DFS(it);
}
}
// cout<<x<<" "<<v+a[x]<<'\n';
rs=max(rs,v+a[x]);
return max(v+a[x], 0);
}
int main() {
ifstream cin("asmax.in");
ofstream cout("asmax.out");
cin>>n;
for (int i=1; i<=n; i++) cin>>a[i];
for (int i=1; i<n; i++) {
int x,y; cin>>x>>y;
V[x].push_back(y);
V[y].push_back(x);
}
DFS(1);
cout<<rs;
return 0;
}