Cod sursa(job #1987724)

Utilizator llalexandruLungu Alexandru Ioan llalexandru Data 31 mai 2017 21:13:02
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <vector>
#define NM 16005
#define INF 1000000000

using namespace std;

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

int n, total, Valid[NM], maxim=-1*INF, A[NM], P[NM];
vector <int> V[NM];

int DFS(int x)
{
    int i;
    for (i=0; i<V[x].size(); i++)
    {
        if (Valid[V[x][i]]==0)
        {
            Valid[V[x][i]]=1;
            int r=DFS(V[x][i]);
            if (r>0)
                A[x]+=r;
        }
    }
    A[x]+=P[x];
    if (A[x]>maxim)
        maxim=A[x];
    return A[x];
}

int main()
{
    int i, x, y;
    fin>>n;
    for (i=1; i<=n; i++)
        fin>>P[i];
    for (i=1; i<n; i++)
    {
        fin>>x>>y;
        V[x].push_back(y);
        V[y].push_back(x);
    }
    Valid[1]=1;
    DFS(1);
    fout<<maxim;
    fout.close();
    return 0;
}