Cod sursa(job #2465311)

Utilizator Dragos1226Dragos Chileban Dragos1226 Data 29 septembrie 2019 20:07:48
Problema Asmax Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
#define NMAX 16000
vector <int> V[NMAX+5];
int N, viz[NMAX+5], val[NMAX+5], s[NMAX+5], smax;

void asmax (int node) {
    viz[node] = 1;

    for (int i = 0; i < V[node].size(); i++) {
        int vecin = V[node][i];
        if (!viz[vecin]) {
        s[vecin] = max(s[node] + val[vecin], val[vecin]);
        if(s[vecin] > smax)
            smax = s[vecin];
        asmax(vecin);
        }
    }
}

int main () {
    in >> N;

    for (int i = 0; i < N; i++)
        in >> val[i];
    int x,y;
    for (int i = 0; i < N-1; i++) {
        in >> x >> y;
        V[x].push_back(y);
        V[y].push_back(x);
    }


    for (int i = 0; i < N; i++) {
        smax = val[i];
        s[i] = val[i];
        asmax(i);
        for (int j = 0; j < N; j++)
            viz[j] = 0;
    }

    out << smax;
}