Cod sursa(job #1913083)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 8 martie 2017 11:44:25
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <cstdio>
#include <vector>
#define MAXN 16050

using namespace std;

int n, a[MAXN], parent[MAXN], best = -999999;
vector<int> graf[MAXN];

void read()
{
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
        scanf("%d", &a[i]);
    for (int i = 1; i <= n-1; i++) {
        int x, y;
        scanf("%d %d", &x, &y);
        graf[x].push_back(y);
        graf[y].push_back(x);
    }
}

int solve(int nod)
{
    int smx = a[nod];
    for (int y : graf[nod])
    {
        if (parent[nod] == y) continue;
        parent[y] = nod;
        int s = solve(y);
        smx += s;
    }
    best = max(best, smx);
    return max(smx, 0);
}

int main()
{
    freopen("asmax.in", "r", stdin);
    freopen("asmax.out", "w", stdout);

    read();
    solve(1);
    printf("%d", best);

    return 0;
}