Cod sursa(job #528111)

Utilizator APOCALYPTODragos APOCALYPTO Data 2 februarie 2011 00:03:27
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
using namespace std;
#include<iostream>
#include<fstream>
#include<vector>
#define pb push_back
vector<int> G[16005];

ofstream fout("asmax.out");
int N,M,v[16005],dp[16006],viz[16005],sol=-0x3f3f3f3f;
void dfs(int x)
{
   if(!viz[x])
    {
        viz[x]=1;
        vector<int>::iterator it;
        //dp[x]=v[x];
        for(it=G[x].begin();it<G[x].end();it++)
        {   //cout<<" "<<x<<"->"<<*it;
            if(!viz[*it])
            {


            dfs(*it);

            if(dp[*it]>0)
               dp[x]+=dp[*it];
            }
            if(dp[x]>sol)
               sol=dp[x];
        }
    }
}

void cit()
{
    ifstream fin("asmax.in");
    int i,x,y;
    fin>>N;
    for(i=1;i<=N;i++)
    {
        fin>>dp[i];
    }

    for(i=1;i<=N;i++)
    {
        fin>>x>>y;
        G[x].pb(y);
        G[y].pb(x);
    }


    fin.close();
}


int main()
{

    cit();


    int i;

    dfs(1);
    fout<<sol<<"\n";

    fout.close();

    return 0;
}