Cod sursa(job #2502757)

Utilizator AndreeaGherghescuAndreea Gherghescu AndreeaGherghescu Data 1 decembrie 2019 15:36:01
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>
#define INF 1e5
using namespace std;

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

const int N=16001;
int v[N],urm[2*N],vf[2*N],lst[N],nr;
long long d[N];
bool viz[N];

void adauga (int x,int y)
{
    vf[++nr]=y;
    urm[nr]=lst[x];
    lst[x]=nr;
}

void dfs (int x)
{
    viz[x]=true;
    d[x]=v[x];
    for (int p=lst[x];p!=0;p=urm[p])
    {
        int y=vf[p];
        if (!viz[y]){
            dfs(y);
            if (d[y]>0)
                d[x]+=d[y];
        }
    }
}

int main()
{
    int n,x,y;
    in>>n;
    for (int i=1;i<=n;i++)
    {
        in>>v[i];
        d[i]=-INF;
    }
    for (int i=1;i<n;i++)
    {
        in>>x>>y;
        adauga (x,y);
        adauga (y,x);
    }
    dfs(1);
    long long maxx=-INF;
    for (int i=1;i<=n;i++){
        maxx=max (maxx,d[i]);
    }
    out<<maxx;
    return 0;
}