Cod sursa(job #1670269)

Utilizator andrei_bB. Andrei andrei_b Data 31 martie 2016 16:56:48
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>

using namespace std;

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

const int Nmax=16005;
const int Mmax=32005;

int n,a,b,nr,u,maxim=-17000;
int lst[Nmax],vf[Mmax],urm[Mmax],val[Nmax],q[Nmax];
bool viz[Nmax];

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

void bfs ( int x ){

    viz[x]=true;
    int poz,y;

    poz=lst[x];
    while ( poz != 0 ){
        y=vf[poz];
        poz=urm[poz];
        if ( !viz[y] ){
            bfs(y);
            if ( val[y] > 0 )
                val[x]+=val[y];
        }
    }

    if ( val[x] > maxim )
        maxim=val[x];

}

int main()
{
    fin>>n;
    for ( int i=1 ; i<=n ; i++ )
        fin>>val[i];
    for ( int i=1 ; i<=n-1 ; i++ ){
        fin>>a>>b;
        adauga(a,b);
        adauga(b,a);
    }
    bfs(1);
    fout<<maxim;

}