Cod sursa(job #1196756)

Utilizator pop_bogdanBogdan Pop pop_bogdan Data 9 iunie 2014 00:42:41
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

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

int N, x, y;
vector <vector<int> > V;
vector <int> C;
bool Vis[16001];
long long bestsum(-99999999), sum[16001];

void DFS(int nod);

int main()
{
    is >> N;
    V.resize(N+1);
    C.resize(N+1);
    for ( int i = 1; i <= N; ++i )
    {
        is >> x;
        C[i] = x;
    }
    for ( int i = 1; i <= N-1; ++i )
    {
        is >> x >> y;
        V[x].push_back(y);
        V[y].push_back(x);
    }
    DFS(1);
    os << bestsum;

    is.close();
    os.close();
}

void DFS(int nod)
{
    Vis[nod] = true;
    sum[nod] = C[nod];
    for ( int i = 0; i < V[nod].size(); ++i )
    {
        if ( Vis[V[nod][i]] == false )
        {
            DFS(V[nod][i]);
            sum[nod] = max(sum[V[nod][i]] + sum[nod], sum[nod]);
            if ( sum[nod] > bestsum )
                bestsum = sum[nod];
        }
    }
}