Cod sursa(job #1314628)

Utilizator japjappedulapPotra Vlad japjappedulap Data 12 ianuarie 2015 01:42:01
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <cstdio>
#include <vector>
using namespace std;

ofstream os ("asmax.out");

int N, D[16004], x, y, C[16004], S = -(1<<20);
bool B[16004];

vector <int> G[16004];

void DFS(int x);

int main()
{
    freopen("asmax.in", "r", stdin);
    scanf("%i", &N);
    for (int i = 1; i <= N; ++i)
        scanf("%i", &C[i]);
    for (int i = 1, a, b; i < N; ++i)
        scanf("%i%i", &a, &b), G[a].push_back(b), G[b].push_back(a);
    DFS(1);
    os << S;
    os.close();
}

void DFS(int x)
{
    D[x] = C[x];
    B[x] = 1;
    for (int k = 0, i; k < G[x].size(); ++k)
    {
        i = G[x][k];
        if (B[i] == 1) continue;
        DFS(i);
        D[x] = max(D[x], D[x] + D[i]);
    }
    S = max(S, D[x]);
};