Cod sursa(job #1239438)

Utilizator manciu_ionIon Manciu manciu_ion Data 9 octombrie 2014 00:31:46
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <cstdio>
#include <vector>

#define nMax 16010

using namespace std;

vector < int > adj[nMax];
bool uz[nMax];
int best[nMax];
int n, sum = 0;

void ReadData();
void DFS(int x);
void PrintSol();

int main()
{
    freopen("asmax.in", "rt", stdin);
    freopen("asmax.out", "wt", stdout);

    ReadData();
    DFS(0);
    PrintSol();

    fclose(stdin);
    fclose(stdout);
    return 0;
}

void PrintSol()
{
    int i, sol = best[1];
    for (i = 2; i <= n; ++i)
       if (best[i] > sol)
           sol = best[i];
    printf("%d\n", sol);
}
void DFS(int x)
{
    uz[x] = 1;
    for (vector < int >::const_iterator it = adj[x].begin(), itend = adj[x].end(); it != itend; ++it)
        if (!uz[*it])
        {
            DFS(*it);
            ///printf("%d ", *it);
            if (best[*it] > 0) best[x] += best[*it];
        }
}

void ReadData()
{
    scanf("%d", &n);
    int i, x, y;
    for (i = 1; i <= n; ++i)
    {
        scanf("%d", &best[i]);
    }
    adj[0].push_back(1);
    for (i = 1; i < n; ++i)
    {
        scanf("%d%d", &x, &y);
        adj[x].push_back(y);
        adj[y].push_back(x);
    }
}