Cod sursa(job #1912781)

Utilizator calin1Serban Calin calin1 Data 8 martie 2017 10:39:07
Problema Asmax Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <bitset>
#define N 16005

using namespace std;

int n, cost[N], cost_actual, maxim = -16000001;

vector <int> G[N];

bitset <N> viz;

void dfs(int nod)
{
    viz[nod] = true;

    cost_actual += cost[nod];

    if(cost_actual > maxim)
    {
        maxim = cost_actual;
    }
    else
    {
        cost_actual -= cost[nod];
    }

    vector <int>::iterator it;

    for(it = G[nod].begin() ; it != G[nod].end() ; ++it)
    {
        if(!viz[*it])
        {
            dfs(*it);
        }
    }

}

void citire()
{
    scanf("%d\n",&n);

    for(int i = 1 ; i <= n ; ++i)
    {
        scanf("%d ",&cost[i]);
    }
    scanf("\n");

    int a, b;

    for(int i = 1 ; i < n ; ++i)
    {
        scanf("%d %d\n",&a,&b);

        G[a].push_back(b);
        G[b].push_back(a);
    }

    dfs(1);

    printf("%d",maxim);
}

int main()
{
    freopen("asmax.in","r",stdin);
    freopen("asmax.out","w",stdout);

    citire();

    return 0;
}