Cod sursa(job #2007942)

Utilizator liviu2000Dragomirescu Liviu liviu2000 Data 4 august 2017 17:03:12
Problema Asmax Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

vector <int> graf[100] ;
int sol[100] , t[100] ;
bool viz[100] ;
int maxim ;
int A[100] ;

int maxim2 ( int a , int b )
{
    return a > b ? a : b ;
}

int DFS ( int nod )
{
    int i , x ,r ;
    //cout << " intrare in functie " << graf[nod].size() ;
    for ( i = 0 ; i < graf[nod].size() ; i++ )
    {
        x = graf[nod][i] ;
        if ( viz[x] == false )
        {
            viz[x] = true ;
            //cout << " merg in " << x << endl ;
            r = DFS(x) ;
            if ( r > 0 )
                A[nod] = A[nod] + r ;
        }
    }
    A[nod] = A[nod] + t[nod] ;
    if ( A[nod] > maxim )
        maxim = A[nod] ;
    return A[nod] ;
}

int main()
{
    int i , x , y , n ;
    ifstream fin ("asmax.in") ;
    ofstream fout("asmax.out") ;
    fin >> n ;
    for ( i = 1 ; i <= n ; i++ )
    {
        fin >> t[i] ;
        viz[i] = false ;
    }
    for ( i = 1 ; i < n ; i++ )
    {
        fin >> x >> y ;
        graf[x].push_back(y) ;
        graf[y].push_back(x) ;
    }
    viz[1] = true ;
    maxim = -100000000 ;
    DFS(1) ;
    fout << maxim ;
}