Cod sursa(job #1658763)

Utilizator FeriCsiki Francisc Alexandru Feri Data 21 martie 2016 19:39:50
Problema Asmax Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int N= 16001,K=1001;

int lst[N],vf[N],urm[N*2],v[N],n,nr,sol=0,c[N],scor[N];

bool viz[N];

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

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

int maxim(int i, int j)
{
    if(i<j)
        return j;
    else
        return i;
}

int main()
{
    int i,j,x,y,maxi;
    in>>n;
    for(i=1;i<=n;i++)
    {
        in>>v[i];
    }
    for(i=1;i<n;i++)
    {
        in>>x>>y;
        add(x,y);
        add(y,x);
    }
    dfs(1);
    maxi=scor[1];
    for(i=1;i<=n;i++)
    {
        maxi=maxim(maxi,scor[i]);
    }
    out<<maxi;
    return 0;
}