Cod sursa(job #2672607)

Utilizator Mirela_MagdalenaCatrina Mirela Mirela_Magdalena Data 14 noiembrie 2020 11:51:47
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#define NMAX 16005
#include <fstream>
#include <vector>
#include <climits>
using namespace std;

ifstream f("asmax.in");
ofstream g("asmax.out");

int n, v[NMAX], maxi = INT_MIN;
vector<int> graph[NMAX];

void read()
{
    int a, b;

    f>>n;
    for(int i = 1; i <= n; ++i)
        f>>v[i];
    for(int i = 1; i < n; ++i)
    {
        f>>a>>b;
        graph[a].push_back(b);
        graph[b].push_back(a);
    }
}

int viz[NMAX];
int recurs(int vf)
{
    int smax = v[vf];
    for(auto &c:graph[vf])
        if(viz[c] == 0)
        {
            viz[c] = 1;
            smax = max(smax,smax + recurs(c));
            viz[c] = 0;
        }
    if(smax > maxi)
        maxi = smax;
    return smax;
}


int main()
{
    read();
    viz[1] = 1;
    recurs(1);
    g<<maxi;
    return 0;
}