Cod sursa(job #1436195)

Utilizator deresurobertoFMI - Deresu Roberto deresuroberto Data 15 mai 2015 13:44:44
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
//Deresu Roberto - FMI
//Re :)
#include <fstream>
#include <vector>
#include <algorithm>
#include <climits>
#define nx 160007
using namespace std;

int N, Sol, Val[nx], ValMax[nx];
vector<int> V[nx];

ifstream fin("asmax.in");
ofstream fout("asmax.out");

int Dfs(int node, int father)
{
    int sum = Val[node];

    for (vector<int>::iterator it = V[node].begin(); it != V[node].end(); it++)
    {
        if (*it != father)
        {
            int s = Dfs(*it, node);
            if (s > 0) sum += s;
        }
    }

    Sol = max (Sol, sum);

    return sum;
}

int main()
{
    fin >> N;

    for (int i = 1; i <= N; i++)
    {
        fin >> Val[i];
    }

    for (int i = 1; i < N; i++)
    {
        int x, y;

        fin >> x >> y;
        V[x].push_back(y);
        V[y].push_back(x);
    }

    Sol = INT_MIN;
    Dfs(1, 0);

    fout << Sol;

    return 0;
}