Cod sursa(job #1693260)

Utilizator Bodo171Bogdan Pop Bodo171 Data 22 aprilie 2016 19:44:06
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include<bitset>
#include<fstream>
#include<vector>
using namespace std;
vector<int> v[16005];
bitset<16005> viz;
int i,n,myvalue,best[16005],mx,a,b;
int dfs(int x)
{
    viz[x]=1;

    for(int i=0;i<v[x].size();i++)
    {
     if(!viz[v[x][i]])
     {
         myvalue=dfs(v[x][i]);
         if(myvalue>0) best[x]+=myvalue;
         if(myvalue>mx) mx=myvalue;
     }
     else
     {
          myvalue=best[v[x][i]];
         if(myvalue>0) best[x]+=myvalue;
         if(myvalue>mx) mx=myvalue;
     }
    }
    return best[x];
}
int main()
{
    ifstream f("asmax.in");
    ofstream g("asmax.out");
    mx=-(1<<30);
    f>>n;
    for(i=1;i<=n;i++)
    {f>>best[i];if(best[i]>mx) mx=best[i];}
    for(i=1;i<=n-1;i++)
    {
        f>>a>>b;
        v[a].push_back(b);

    }
    for(i=1;i<=n;i++)
    {
        if(!viz[i])
        {
            myvalue=dfs(i);
            if(myvalue>mx) mx=myvalue;
        }
    }
    g<<mx;
    return 0;
}