Cod sursa(job #2566426)

Utilizator richardionelRichard Ionel richardionel Data 2 martie 2020 21:16:43
Problema Asmax Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#include <math.h>
using namespace std;

ifstream fin ("asmax.in");
ofstream fout ("asmax.out");
const int Nlim = 16001;
int N,x,y,k;
vector <int> muchii[Nlim];
int valori[Nlim];
int sum = 0;
int bestsum = -1001;
int val;
int vizitat[Nlim];

void dfs(int nod)
{
    vizitat[nod] = 1;
    for (unsigned int i = 0 ;i < muchii[nod].size() ;i++)
    {
        int vecin = muchii[nod][i];
        if (!vizitat[vecin])
        {
            dfs(vecin);
            sum += valori[i];
            if (sum < 0)
                sum = 0;
            else if (sum > bestsum)
                bestsum = sum;
        }
    }
}

void readandsol()
{
    fin >> N;
    for (int i = 1 ;i <= N ;i++)
        fin >> valori[k++];

    for (int i = 1 ;i < N ;i++)
    {
        fin >> x >> y;
        muchii[x].push_back(y);
        muchii[y].push_back(x);
    }

    dfs(1);//e arbore pot lua direct cu 1
    fout << sum;

}

int main()
{
    readandsol();
}