Cod sursa(job #2947189)

Utilizator vlad_maneaManea Vlad Cristian vlad_manea Data 25 noiembrie 2022 19:58:45
Problema Asmax Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

vector<int> G[16005];

int n, v[16005], viz[16005], vmax=-1005;

void citire() {
    fin>>n;
    for (int i=0; i<n; i++)
        fin>>v[i];
    int x, y;
    for (int i=0; i<n-1; i++) {
        fin>>x>>y;
        G[x].push_back(y);
        G[y].push_back(x);
    }
}

int dfs(int k) {
    viz[k]=1;
    int sum=v[k-1];
    for (auto &i: G[k])
        if (!viz[i])
            sum=max(sum, sum+dfs(i));
    if (sum>vmax)
        vmax=sum;
    return sum;
}

int nodmax() {
    int nmax=-1005;
    for (int i=0; i<n; i++)
        if (v[i]>v[nmax])
            nmax=i;
    return nmax;
}

int main() {
    citire();
    fout<<dfs(nodmax());
    return 0;
}