Cod sursa(job #1440792)

Utilizator simaghitaSima Gheorghe Eugen simaghita Data 23 mai 2015 14:13:55
Problema Asmax Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <vector>
#define NMAX 16010
#define oo 2000000000
using namespace std;
int n;
int v[NMAX],sol;
vector<int> L[NMAX];
void citire()
{
    ifstream fin("asmax.in");
    fin>>n;
    for(int i=1;i<=n;++i)
        fin>>v[i];
    int x,y;
    for(int i=1;i<n;++i)
    {
        fin>>x>>y;
        L[x].push_back(y);
        L[y].push_back(x);
    }
    fin.close();
}
int DFS(int node, int f)
{
    int s=v[node];
    for(int i=0;i<L[node].size();++i)
    {
        if(L[node][i]!=f)
        {
            int suma=DFS(L[node][i],node);
            if(suma > 0)
                s+=suma;
        }
    }
    sol=max(sol,s);
    return s;
}
int main()
{
    citire();
    sol=-oo;
    DFS(1,0);
    ofstream fout("asmax.out");
    fout<<sol<<"\n";
    fout.close();
    return 0;
}