Cod sursa(job #2998549)

Utilizator bogdan007Bogdan Patrascu bogdan007 Data 9 martie 2023 18:31:47
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int N = 16e3;
int n, d[N+1], s[N+1];
bool viz[N+1];
vector <int> M[N+1];

void DFS(int nod)
{
    viz[nod] = true;
    s[nod] = d[nod];
    for(unsigned int i = 0; i < M[nod].size(); i++)
    {
        int vecin = M[nod][i];
        if(!viz[vecin])
        {
            DFS(vecin);
            s[nod] = max(s[nod], s[nod] + s[vecin]);
        }
    }
}

int main()
{
    cin >> n;
    int a, b;
    for(int i = 1; i <= n; i++)
        cin >> d[i];
    for(int i = 1; i < n; i++)
    {
        cin >> a >> b;
        M[a].push_back(b);
        M[b].push_back(a);
    }
    DFS(1);
    int scor_max = s[1];
    for (int i = 2; i <= n; i++)
    {
        scor_max = max(scor_max, s[i]);
    }
    cout << scor_max;
    return 0;
}