Pagini recente » Cod sursa (job #295283) | Cod sursa (job #2633351) | Cod sursa (job #705137) | Cod sursa (job #1043042) | Cod sursa (job #2405262)
#include<bits/stdc++.h>
#define N 16050
using namespace std;
int n,rs,s,a[N];
int dp[N];
vector<int>V[N];
void DFS(int x, int pr) {
for (auto it:V[x]) {
if (it!=pr) {
DFS(it,x);
if (dp[it]>0) dp[x]+=dp[it];
}
}
dp[x]+=a[x];
rs=max(rs,dp[x]);
}
int main() {
ifstream cin("asmax.in");
ofstream cout("asmax.out");
cin>>n;
for (int i=1; i<=n; ++i) cin>>a[i], s+=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);
}
rs=s;
DFS(1,-1);
cout<<rs;
return 0;
}