Cod sursa(job #1069498)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 30 decembrie 2013 09:53:22
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
# include<cstdio>
# include <vector>
# define NMAX 16001
using namespace std;

vector <int> a[NMAX];
int n, x, y, Max=-NMAX*1000, cost[NMAX], viz[NMAX], S[NMAX];

void dfs(int k)
{
    int i;
    viz[k] = 1;
    S[k] = cost[k];
    for (i=0; i<(int) a[k].size();++i)
        if (!viz[a[k][i]])
        {
            dfs(a[k][i]);
            if (S[a[k][i]]>0)
                S[k] += S[a[k][i]];
        }
    if (Max<S[k])
        Max=S[k];
}
int main()
{
    int i;
    freopen("asmax.in", "r", stdin);
    freopen("asmax.out","w", stdout);
    scanf("%d", &n);
    for (i=1; i<=n; ++i)
        scanf("%d", &cost[i]);
    for (i=1; i<n; ++i)
        {
            scanf("%d%d",&x,&y);
            a[x].push_back(y);
            a[y].push_back(x);
        }

    dfs(1);

    printf("%d\n", Max);

    return 0;
}