Nu aveti permisiuni pentru a descarca fisierul grader_test4.in

Cod sursa(job #1800202)

Utilizator antanaAntonia Boca antana Data 7 noiembrie 2016 15:30:56
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <cstdio>
#define MAXN 100000

int r, n, lista[MAXN+1], nxt[2*MAXN+1], val[2*MAXN+1], cost[MAXN+1], best[MAXN+1];
bool viz[MAXN+1];
int ans;

inline int maxim(int a, int b){
    return (a > b ? a : b);
}

inline void adauga(int x, int y)
{
    val[++r] = y;
    nxt[r] = lista[x];
    lista[x] = r;
}

void dfs(int nod)
{
    int p;

    viz[nod] = 1;
    p = lista[nod];
    best[nod] = cost[nod];

    while(p)
    {
        if(!viz[val[p]]){
            dfs(val[p]);
            if(best[val[p]] > 0)
                best[nod] += best[val[p]];
        }
        p = nxt[p];
    }

    ans = maxim(ans, best[nod]);
}

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

    int i, x, y;

    scanf("%d", &n);

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

    for(i=1; i<n; ++i)
    {
        scanf("%d%d", &x, &y);
        adauga(x, y);
        adauga(y, x);
    }

    dfs(1);

    printf("%d", ans);

    return 0;
}