Cod sursa(job #2830404)

Utilizator AndreeaCreitaCreita Andreea AndreeaCreita Data 9 ianuarie 2022 21:05:26
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb

#include<bits/stdc++.h>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");

#define inf 1e9

vector <int>l[50005]; //lista de adiacenta
int valoare[50005];   //vector pt valorile asociate nodurilor
int suma[50005];
bool viz[50005];
int n;


void dfs(int s)
{
    viz[s]=1;
    suma[s] = valoare[s];     //pune in suma valoarea nodului initial

    for(auto el:l[s])
    {
        if(viz[el]==0)
        {
            dfs(el);
            suma[s] = max(suma[s], suma[s]+ suma[el]);   //actualizeaza suma cu suma care este mai mare
        }
    }
}
int main()
{
    in>>n;

    for(int i = 1; i <= n; i++)
    {

        in >> valoare[i];      //pune valorile nodurilor in vectorul de valori

    }


    for(int i =0; i<n; i++)
    {
        int x,y;
        in>>x>>y;
        l[x].push_back(y);
        l[y].push_back(x);
    }
    dfs(1);
//asmax
int suma_max = -inf;  //suma maxima a nodurilor initial
    for(int i =1; i<=n; i++)
    {
        if(suma[i] > suma_max)
        {
            suma_max = suma[i];
        }
    }
    out<<suma_max;
    return 0;
}