Cod sursa(job #1538982)

Utilizator OpportunityVlad Negura Opportunity Data 30 noiembrie 2015 03:47:51
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <vector>
#define MAXINT 99999
#define DN 16001
#define pb push_back
using namespace std;

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

int n,v[DN],viz[DN],rs=-MAXINT;
vector<int> g[DN];

int DFS(int nod) {
    int sum = v[nod];
    viz[nod]=1;
    for (int i = 0; i < g[nod].size(); ++i) {
        if (!viz[g[nod][i]]) {
            viz[g[nod][i]] = 1;
            int ss = DFS(g[nod][i]);
            if (ss>0) {
                sum+=ss;
            }
        }
    }
    rs = max(rs,sum);

    return sum;
}

int main()
{
    fi >> n;
    for (int i = 1; i <= n; ++i) {
        fi >> v[i];
    }
    for (int i = 1; i < n; ++i) {
        int u,v;
        fi >> u >> v;
        g[u].pb(v);
        g[v].pb(u);
    }

    DFS(1);

    fo << rs;

    return 0;
}