Cod sursa(job #2947190)

Utilizator Kawaiimeatball13Russu Mihaela Kawaiimeatball13 Data 25 noiembrie 2022 20:00:04
Problema Asmax Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int n;
int viz[101];
int v[101];
int a[101][101];
int sg;

void citire()
{
    fin >> n;
    for(int i = 1; i <= n; ++i)
        fin >> v[i];

    int x, y;
    for(int i = 1; i < n; ++i)
    {
        fin >> x >> y;
        a[x][y] = a[y][x] = 1;
    }
}

int nod_max()
{
    int nmax = 1;
    for(int i = 2; i <= n; ++i)
        if(v[i] > v[nmax])
            nmax = i;

    return nmax;
}

int dfs(int x)
{
    viz[x] = 1;
    int sl = v[x];
    for(int i = 1; i <= n; ++i)
        if(a[x][i] && !viz[i])
        {
            sl = max(sl, sl + dfs(i));
        }

    if(sl > sg)
        sg = sl;
    return sl;
}

int main()
{
    citire();
    int nm = nod_max();
    dfs(nm);
    fout << sg;
    return 0;
}