Cod sursa(job #2010278)

Utilizator cipri321Marin Ciprian cipri321 Data 12 august 2017 13:46:22
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <vector>
#define DIM 16001
#define INF 2000000000
using namespace std;
ifstream fi("asmax.in");
ofstream fo("asmax.out");
int n;
int A[DIM],C[DIM];
vector<int> V[DIM];
int VIZ[DIM];
bool ok;
int mx=-INF;
void dfs(int v)
{
    VIZ[v]=1;
    A[v]=C[v];
    for(int i=0;i<V[v].size();i++)
        if(!VIZ[V[v][i]])
        {
            dfs(V[v][i]);
            if(A[V[v][i]]>0)
                A[v]+=A[V[v][i]];
        }
}
int main()
{
    fi>>n;
    for(int i=1;i<=n;i++)
    {
        fi>>C[i];
        if(C[i]>0)
            ok=true;
        mx=max(mx,C[i]);
    }
    for(int i=1;i<n;i++)
    {
        int a,b;
        fi>>a>>b;
        V[a].push_back(b);
        V[b].push_back(a);
    }
    for(int i=1;i<=n;i++)
        A[i]=-INF;
    if(ok)
    {
        dfs(1);
        mx=-INF;
        for(int i=1;i<=n;i++)
            mx=max(mx,A[i]);
    }
    fo<<mx;
    fi.close();
    fo.close();
    return 0;
}