Cod sursa(job #1991260)

Utilizator giotoPopescu Ioan gioto Data 15 iunie 2017 21:52:25
Problema Asmax Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>
#include <vector>
using namespace std;

int n, Sol = -1000000000, val[16002];
vector <int> v[16002];
bool f[16002];
inline void dfs(int nod){
    f[nod] = 1;
    for(vector <int> :: iterator it = v[nod].begin() ; it != v[nod].end() ; ++it){
        if(f[*it] == 1) continue ;
        val[nod] += val[*it];
        dfs(*it);
    }
    if(val[nod] > Sol) Sol = val[nod];
}
int main()
{
    freopen("asmax.in", "r", stdin);
    freopen("asmax.out", "w", stdout);
    scanf("%d", &n);
    for(int i = 1; i <= n ; ++i)
        scanf("%d", &val[i]);
    for(int i = 1; i < n ; ++i){
        int x, y;
        scanf("%d%d", &x, &y);
        v[x].push_back(y);
        v[y].push_back(x);
    }
    dfs(1);
    printf("%d", Sol);
    return 0;
}