Cod sursa(job #1488857)

Utilizator andreea_zahariaAndreea Zaharia andreea_zaharia Data 19 septembrie 2015 22:52:36
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <vector>

using namespace std;

#define NMAX 16010

int N;
int val[NMAX], sum[NMAX];
bool viz[NMAX];
vector<int> G[NMAX];

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

void dfs (int nod) {
    viz[nod] = 1;
    sum[nod] = val[nod];

    for (int i = 0; i < G[nod].size (); i++) {
        if ( !viz[G[nod][i]]) {
            dfs (G[nod][i]);

            if (sum[G[nod][i]] > 0) {
                sum[nod] += sum[G[nod][i]];
            }
        }
    }
}

int main () {
    fin >> N;
    for (int i = 1; i <= N; i++) {
        fin >> val[i];
    }
    int A, B;
    for (int i = 1; i <= N; i++) {
        fin >> A >> B;

        G[A].push_back (B);
        G[B].push_back (A);
    }

    dfs (1);

    int maxSum = -1000;
    for (int i = 1; i <= N; i++) {
        if (sum[i] > maxSum) {
            maxSum = sum[i];
        }
    }
    fout << maxSum << '\n';

    return 0;
}