Cod sursa(job #1919785)

Utilizator eduardturtoiEduard Turtoi eduardturtoi Data 9 martie 2017 21:03:05
Problema Asmax Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include <vector>
#define nmax 16001
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
short int fiu[nmax][nmax];
short int v[nmax];
int d[nmax],rad[nmax],n;

void dinamica(int nod)
{
    int i;
    d[nod]=d[nod]+v[nod];
    for(i=1;i<=n;i++)
        if(fiu[nod][i])
        {
            dinamica(i);
            if(d[i]>0)
                d[nod]=d[nod]+d[i];
        }
}

int main()
{
    int i,x,y,s=0;
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];
    for(i=1;i<n;i++)
    {
        fin>>x>>y;
        rad[y]=1;
        fiu[x][y]=1;
    }
    for(i=1;i<=n;i++)
        if(rad[i]==0)
        {
            dinamica(i);
            break;
        }
    for(i=1;i<=n;i++)
        s=max(s,d[i]);
    fout<<s;
    return 0;
}