Cod sursa(job #880495)

Utilizator Theorytheo .c Theory Data 16 februarie 2013 20:42:49
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<fstream>
#include<vector>

using namespace std;

const int Nmax = 16009;

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

int N; int SumMax[Nmax]; int Val[Nmax]; bool s[Nmax];int ValNod = -1000000;

vector<int> G[Nmax];

void Read() {

    fin >> N;
    for(int i = 1; i <= N ; ++i)
        fin >> Val[i], SumMax[i] = Val[i], ValNod = max(Val[i], ValNod);

    for(int i = 1; i < N; ++i){

        int X , Y; fin >> X >> Y;
        G[X].push_back(Y);
        G[Y].push_back(X);
    }
}

int BFS(int X){

    s[X] = true;

    for(int i = 0 ;i < G[X].size(); ++i){

        int Y = G[X][i];
        if(s[Y] == false){

            int Sum = BFS(Y);
            if(Sum > 0) SumMax[X] += Sum;

        }
    }
    return SumMax[X];
}

int main(){

    Read ();

    BFS(1);
    int ValMax = -100000;
    for(int i = 1; i <= N; ++i)
        if(ValMax < SumMax[i])
            ValMax = SumMax[i];

    fout << max(ValMax, ValNod);
    return 0;

}