Pagini recente » Cod sursa (job #683784) | Cod sursa (job #1089940) | Cod sursa (job #2224968) | Cod sursa (job #422471) | Cod sursa (job #2450318)
#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,sum[NMAX],val[NMAX],summax,total;
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]);
//summax = max(summax, total - sum[node]);
}
int main(){
int i,x,y;
f >> n;
for(i = 1 ; i <= n ; i++){
f >> val[i];
total += 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;
}