Cod sursa(job #1378900)

Utilizator MoneaVladMonea Vlad MoneaVlad Data 6 martie 2015 15:01:07
Problema Asmax Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int v[16005][16005], c[16005], viz[16005], s[16005], sol;

void dfs(int x) {
    viz[x] = 1;
    s[x] = c[x];
    for(int i = 1; i <= v[x][0]; i++) {
        int vecin = v[x][i];
        if(!viz[vecin]) {
            dfs(vecin);
            s[x] = max(s[x], s[x] + s[vecin]);
        }
    }
    sol = max(sol, s[x]);
}

int main()
{
    int i, n, x, y;
    in >> n;
    for(i = 1; i <= n; i++) {
        in >> c[i];
    }
    for(i = 1; i < n; i++) {
        in >> x >> y;
        v[x][0]++;
        v[x][v[x][0]] = y;
        v[y][0]++;
        v[y][v[y][0]] = x;
    }
    dfs(1);
    out << sol << "\n";
    in.close();
    out.close();
    return 0;
}