Cod sursa(job #1235990)

Utilizator japjappedulapPotra Vlad japjappedulap Data 1 octombrie 2014 01:19:02
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream is ("asmax.in");
ofstream os ("asmax.out");

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

vector <int> V[16004];

void DFS(int k);

int main()
{
    is >> N;
    for (int i = 1; i <= N; ++i)
        is >> C[i], S = max(C[i], S);
    for (int i = 1; i < N; ++i)
    {
        is >> x >> y;
        V[x].push_back(y);
        V[y].push_back(x);
    }
    b[1] = 1;
    DFS(1);
    os << S;
    is.close();
    os.close();
}

void DFS(int k)
{
    D[k] = C[k];
    for (int j = 0; j < V[k].size(); ++j)
        if (b[V[k][j]] == 0)
        {
            b[V[k][j]] = 1;
            DFS(V[k][j]);
            D[k] = max(D[k] + D[V[k][j]], D[k]);
            S = max(D[k], S);
        }

};