Cod sursa(job #1839719)

Utilizator robx12lnLinca Robert robx12ln Data 3 ianuarie 2017 13:11:24
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream>
#include<vector>
#include<cstring>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n, x[16005], a, b, s[16005], maxim, f[16005];
vector<int> v[16005];
void dfs( int nod ){
    s[nod] = x[nod];
    f[nod] = 1;
    for( int i = 0; i < v[nod].size(); i++ ){
        int vecin = v[nod][i];
        if( f[vecin] == 0 ){
            dfs( vecin );
            if( s[nod] < s[nod] + s[vecin] )
                s[nod] += s[vecin];
        }
    }
}
int main(){
    fin >> n;
    for( int i = 1; i <= n; i++ ){
        fin >> x[i];
    }
    for( int i = 1; i < n; i++ ){
        fin >> a >> b;
        v[a].push_back( b );
        v[b].push_back( a );
    }
    dfs(1);
    maxim = -200000000;
    for( int i = 1; i <= n; i++ ){
        maxim = max( maxim, s[i] );
    }
    fout << maxim;
    return 0;
}