Cod sursa(job #2773090)

Utilizator Gabriel_DascalescuGabriel Dascalescu Gabriel_Dascalescu Data 4 septembrie 2021 16:40:02
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <vector>
#define nmax 16005

using namespace std;

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

int v[nmax];

int n, a, b, rasp=-1000000;

vector <int> graf[nmax];

bool viz[nmax];

void dfs(int nod)
{
    viz[nod]= true;
    for(int i=0; i<graf[nod].size(); ++i)
    {
        if(!viz[graf[nod][i]])
        {
            dfs(graf[nod][i]);
            if(v[graf[nod][i]]>0)
            {
                v[nod] += v[graf[nod][i]];
            }
        }
    }
    rasp = max(rasp , v[nod]);
}

int main()
{
    in>>n;
    for(int i=1; i<=n; i++)
    {
        in>>v[i];
    }
    for(int i=1; i<n; i++)
    {
        in>>a>>b;
        graf[a].push_back(b);
        graf[b].push_back(a);
    }
    int finalans = 1;
    for(int i=1; i<=n; ++i)
    {
        if(graf[i].size()==1)
            finalans = i;
    }
    dfs(finalans);
    out<<rasp;
    return 0;
}