Cod sursa(job #528109)

Utilizator APOCALYPTODragos APOCALYPTO Data 1 februarie 2011 23:45:58
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 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)
{


        vector<int>::iterator it;

        for(it=G[x].begin();it<G[x].end();it++)
        {   if(!viz[*it])
            {
            viz[*it]=1;
            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-1;i++)
    {
        fin>>x>>y;

        G[x].pb(y);
        G[y].pb(x);
    }


    fin.close();
}


int main()
{

    cit();


    int i;
    viz[1]=1;
    dfs(1);
    fout<<sol<<"\n";

    fout.close();

    return 0;
}