Cod sursa(job #961787)

Utilizator FlameingoAiordachioaei Marius Flameingo Data 12 iunie 2013 21:42:20
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#include <vector>
using namespace std;

const int DMAX = 16003;
vector <int> AD[DMAX];
int V[DMAX], S[DMAX];
bool viz[DMAX];

void DFS (int nod) {

    viz[nod] = 1;
    S[nod] = V[nod];
    for (int i = 0; i < AD[nod].size(); ++i)
        if (!viz[AD[nod][i]]) {
            DFS (AD[nod][i]);
            if (S[AD[nod][i]] > 0)
                S[nod] += S[AD[nod][i]];
        }

}

int main () {

    freopen ("asmax.in", "r", stdin);
    freopen ("asmax.out", "w", stdout);
    int N, a, b, i, M;
    scanf ("%d", &N);
    for (i = 1; i <= N; ++i)
        scanf ("%d", &V[i]);
    for (i = 1; i < N; ++i)
        scanf ("%d%d", &a, &b),
        AD[a].push_back(b),
        AD[b].push_back(a);
    DFS (1);
    M = S[1];
    for (i = 2; i <= N; ++i)
        if(S[i] > M)
            M = S[i];
    printf ("%d", M);

}