Pagini recente » Cod sursa (job #2037948) | Cod sursa (job #2255539) | Cod sursa (job #1498146) | Cod sursa (job #3244193) | Cod sursa (job #2780730)
#include <bits/stdc++.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
const int N = 1.6e4 + 1;
int n, x, y, v[N], ans = INT_MIN, sum[N];
vector<int> c[N];
bool vis[N];
void dfs(int nod){
vis[nod] = 1;
sum[nod] = v[nod];
for(auto y: c[nod]){
if(!vis[y]){
dfs(y);
if(sum[y] > 0)
sum[nod] += sum[y];
}
}
}
int main(){
f >> n;
for(int i = 1; i <= n; i++)
f >> v[i];
for(int i = 1; i < n; i++){
f >> x >> y;
c[x].push_back(y);
c[y].push_back(x);
}
f.close();
dfs(1);
for(int i = 1; i <= n; i++)
ans = max(ans, sum[i]);
g << ans;
g.close();
}