Cod sursa(job #2508115)

Utilizator Ioan_AnghelIoan Anghel Ioan_Anghel Data 11 decembrie 2019 16:26:18
Problema Asmax Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>

using namespace std;

const int N = 100001, m = 100001;
int nr, vf[M], urm[M], lst[N], n, maxi, v[N];
bool viz[N];

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

void adauga(int x, int Y)
{
    vf[++nr] = y;
    urm[nr] = lst[x];
    lst[x] = nr;
}

void dfs(int x)
{
    viz[x] = true;
    for(int p = lst[x]; p != 0; p = urm[p]){
        int y = vf[p];
        if(!viz[y]){
            dfs(y);
            if(v[y] > 0){
                v[x] += v[y];
            }
            maxi = max(maxi, v[x]);
        }
    }
}

int main()
{
    in >> n;
    for(int i = 0; i < n; i++){
        in >> v[i]
    }
    for(int i = 0; i < n - 1; i++){
        int x, y;
        in >> x >> y;
        adaugare(x, y);
        adaugare(y, x);
    }
    for(int i = 0; i < n - 1; i++){
        if(viz[i] != true){
            dfs(i);
        }
    }


    return 0;
}