Cod sursa(job #1885872)

Utilizator Marius7122FMI Ciltea Marian Marius7122 Data 20 februarie 2017 14:57:32
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#include <vector>
#define N 16005
using namespace std;

vector<int> graf[N];
int n,i,a,b,bst;
int d[N],v[N];
bool viz[N];

int dfs(int x)
{
    int sum=v[x],i,aux;

    if(viz[x])
        return d[x];

    viz[x]=true;

    for(i=0;i<graf[x].size();i++)
    {
        aux=dfs(graf[x][i]);
        if(aux>0)
            sum+=aux;
    }

    d[x]=sum;
    return sum;
}

int main()
{
    FILE *f1,*f2;
    f1=fopen("asmax.in","r");
    f2=fopen("asmax.out","w");

    fscanf(f1,"%d",&n);
    for(i=1;i<=n;i++)
        fscanf(f1,"%d",&v[i]);
    for(i=1;i<n;i++)
    {
        fscanf(f1,"%d%d",&a,&b);
        graf[a].push_back(b);
    }

    for(i=1;i<=n;i++)
        if(!viz[i])
            dfs(i);

    bst=-9999;
    for(i=1;i<=n;i++)
        if(d[i]>bst)
            bst=d[i];

    fprintf(f2,"%d",bst);

    return 0;
}