Cod sursa(job #1774313)

Utilizator Vlad_317Vlad Panait Vlad_317 Data 8 octombrie 2016 19:55:10
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>
#include <vector>
using namespace std;

int v[16001];
vector<int> g[16001];
bool viz[16001];
int maxim = 0;

int dfs(int nod)
{
    int sol = 0;
    viz[nod] = 1;
    for(int i = 0; i < g[nod].size(); i++)
    {
        if(viz[g[nod][i]] == 0)
        {
            int val = dfs(g[nod][i]);
            if(val >= 0)
                sol += val;
        }
    }
    sol += v[nod];
    if(sol > maxim)
        maxim = sol;
    return sol;
}

int main()
{
    FILE *fin, *fout;

    fin = fopen("asmax.in", "r");
    fout = fopen("asmax.out", "w");

    int n;

    fscanf(fin, "%d", &n);

    for(int i = 1; i <= n; i++)
        fscanf(fin, "%d", &v[i]);

    for(int i = 1; i <= n - 1; i++)
    {
        int a, b;
        fscanf(fin, "%d%d", &a, &b);
        g[a].push_back(b);
        g[b].push_back(a);
    }

    dfs(1);

    fprintf(fout, "%d", maxim);

    return 0;
}