Cod sursa(job #2778081)

Utilizator matei.tudoseMatei Tudose matei.tudose Data 28 septembrie 2021 11:44:15
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <vector>
using namespace std;

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

int N, vizitat[16005], valoare[16005], dp[16005], rasp;

vector<int> G[100005];

void DFS(int nod)
{
    dp[nod] = valoare[nod];
    vizitat[nod] = 1;
    for (int i = 0; i < G[nod].size(); i++)
    {
        int ngb = G[nod][i];
        if (vizitat[ngb] == 0)
        {
            DFS(ngb);
            if (dp[ngb] > 0)
                dp[nod] += dp[ngb];
        }    
        
    }
}

int main()
{
    fin >> N;
    for (int i = 1; i <= N; i++)
        fin >> valoare[i];
    for (int i = 0; i < N - 1; i++)
    {
        int nod1, nod2;
        fin >> nod1 >> nod2;
        G[nod1].push_back(nod2);
        G[nod2].push_back(nod1);
    }
    DFS(1);
    for (int i = 1; i <= N; i++)
        if (dp[i] > rasp)
            rasp = dp[i];
    fout << rasp << "\n";
    return 0;
}