Cod sursa(job #1888549)

Utilizator marcdariaDaria Marc marcdaria Data 22 februarie 2017 10:43:40
Problema Asmax Scor 100
Compilator cpp Status done
Runda becreative21 Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream fin("asmax.in");
ofstream fout("asmax.out");

#define pb push_back
const int MaxN=20005;
int maximus=-0x3f3f3f3f;
int N;
vector<int> G[MaxN];
int c[MaxN];
bool viz[MaxN];

void Read();
int DFS(int x);

int main()
{
    Read();
    DFS(1);
    fout<<maximus<<'\n';

    fout.close();
    return 0;
}

void Read()
{
    fin>>N;
    for(int i=1;i<=N;++i)
        fin>>c[i];
    for(int i=1;i<=N;++i)
    {
        int x,y;
        fin>>x>>y;
        G[x].pb(y);
        G[y].pb(x);
    }
    fin.close();
}
int DFS(int x)
{
    int el=c[x],w;
    viz[x]=true;
    for(const int y : G[x])
        if(!viz[y])
        {
            w=DFS(y);
            if(w>0)
                el+=w;
        }
        maximus=max(maximus,el);

    return el;
}