Cod sursa(job #2045953)

Utilizator CatapaPap Catalin Catapa Data 23 octombrie 2017 09:47:56
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <vector>

#define MAX 16005

using namespace std;

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

int n,sol;
int cost[MAX];
vector<int> graf[MAX];
bool vizitat[MAX];

void init()
{
    f >>n ;
    for(int i=1; i<=n; i++)
    {
        f >> cost[i];
    }
    for(int i=0; i<n-1; i++)
    {
        int a,b;
        f >> a >> b;
        graf[a].push_back(b);
        graf[b].push_back(a);
    }
}

int rez(int nod)
{
    if(!vizitat[nod])
    {
       vizitat[nod] = 1;
       for(auto i : graf[nod])
       {
           if(!vizitat[i])
           {
               cost[nod] = max(cost[nod], cost[nod] + rez(i));
           }
       }
    }
    sol = max(sol, cost[nod]);
    return cost[nod];
}

int main()
{
    init();
    rez(1);
    g << sol;


    return 0;
}