Cod sursa(job #1737403)

Utilizator mirupetPetcan Miruna mirupet Data 3 august 2016 23:02:33
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<cstdio>
#include<vector>
#define NMax 16005
#define Maxim(x, y) (x >= y ? x : y)
using namespace std;

FILE *fin = freopen("asmax.in", "r", stdin);
FILE *fout = freopen("asmax.out", "w", stdout);

int N, sol = -100000000;
int v[NMax];
bool u[NMax];
vector < int > w[NMax];

void DFS(int X)
{
    u[X] = 1;
    for (int  i = 0; i < w[X].size(); i++)
    {
        if (!u[w[X][i]])
        {
            DFS(w[X][i]);
            if (v[w[X][i]] > 0)
                v[X] += v[w[X][i]];
        }
    }
}

int main()
    {
        scanf("%d", &N);
        for (int i = 1; i <= N; i++)
            scanf("%d", &v[i]);

        for (int i = 1, X, Y; i <= N - 1; i++)
        {
            scanf("%d%d", &X, &Y);
            w[X].push_back(Y);
            w[Y].push_back(X);
        }

        DFS(1);

        for (int i = 1; i <= N; i++)
            sol = Maxim(sol, v[i]);

        printf("%d\n", sol);
    }