Cod sursa(job #2780730)

Utilizator CaptnBananaPetcu Tudor CaptnBanana Data 7 octombrie 2021 19:16:40
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#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();
}