Cod sursa(job #1865611)

Utilizator circeanubogdanCirceanu Bogdan circeanubogdan Data 1 februarie 2017 21:05:35
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <vector>
#define NDIM 16002

using namespace std;

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

vector <int> L[NDIM];

int sol,i,s[16002],v[16002],viz[16002],x,y,n;

void dfs(int x)
{
    viz[x]=1;
    int nodi=x;
    s[nodi]=v[nodi];
    for(int i=0; i<L[nodi].size(); i++)
    {
        int nodc=L[nodi][i];
        if(viz[nodc]==0)
        {
            dfs(nodc);
            if(s[nodc]>0)
                s[nodi]+=s[nodc];
        }

    }
    sol=max(sol,s[nodi]);
}

int main()
{
    f>>n;
    sol=-2000000000;
    for(i=1; i<=n; i++)
    {
        f>>v[i];
        if (v[i]>sol) sol=v[i];
    }
    for(i=1; i<n; i++)
    {
        f>>x>>y;
        L[x].push_back(y);
        L[y].push_back(x);
    }
    dfs(1);
    g<<sol;
    return 0;
}