Cod sursa(job #3375682)

Utilizator PortallosAlexandru Vladimir Portallos Data 13 noiembrie 2026 00:03:20
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("asmax.in");
ofstream fout("asmax.out");

int n;
int cost[16005];
vector<int> graf[16005];
int Max = INT_MIN;
int dp[16001];

bitset<16001> vis;

void dfs(int x) {

    vis[x] = true;

    for (int i : graf[x]) {
        if (!vis[i]) {
            dfs(i);
            if (dp[i] > 0)
                dp[x] += dp[i];
        }
    }
    Max = max(Max, dp[x]);
}

int main() {

    fin>>n;
    for (int i = 1; i <= n; i++) {
        fin>>cost[i];
        dp[i] = cost[i];
    }


    for (int i = 1; i < n; i++) {
        int x, y;
        fin>>x>>y;
        graf[x].push_back(y);
        graf[y].push_back(x);
    }

    dfs(1);

    fout<<Max;

    return 0;
}