Pagini recente » Cod sursa (job #2091736) | Cod sursa (job #1032840) | Cod sursa (job #2615979) | Cod sursa (job #483053) | Cod sursa (job #2450331)
#include <bits/stdc++.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
const int NMAX = 16005;
vector <int> v[NMAX];
int n,val[NMAX];
long long summax,sum[NMAX];
bool viz[NMAX];
void dfs(int node){
sum[node] = val[node];
viz[node] = 1;
for(auto it: v[node])
if(!viz[it]){
dfs(it);
if(sum[it] > 0)
sum[node] += sum[it];
}
summax = max(summax, sum[node]);
}
int main(){
int i,x,y;
f >> n;
for(i = 1 ; i <= n ; i++){
f >> val[i];
summax = min(summax, (long long)val[i]);
}
for(i = 1 ; i < n ; i++){
f >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1);
g << summax;
return 0;
}