Cod sursa(job #2508058)

Utilizator victor1306Victor Mihaila victor1306 Data 11 decembrie 2019 14:53:54
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>

using namespace std;
ifstream cin("asmax.in");
ofstream cout("asmax.out");
int nr;
int vf[32005],urm[32005],lst[16005],v[16005],suma[16005];
bool viz[16005];
void adauga(int x, int y)
{
    vf[++nr]=y;
    urm[nr]=lst[x];
    lst[x]=nr;
}
void dfs(int x)
{
    viz[x]=true;
    for(int p=lst[x]; p!=0; p=urm[p])
    {
        int y=vf[p];
        if(!viz[y])
        {
            dfs(y);
            if(v[y]>0)
            {
                v[x]+=v[y];
            }
        }
    }

}
int main()
{
    int n,x,y;
    cin>>n;
    for(int i=1; i<=n; i++)
    {
        cin>>v[i];
    }
    for(int i=1; i<=n-1; i++)
    {
        cin>>x>>y;
        adauga(x,y);
        adauga(y,x);
    }
    dfs(1);
    int maxim=v[1];
    for(int i=1; i<=n; i++)
    {
        if(v[i]>maxim)
        {
            maxim=v[i];
        }
    }
    cout<<maxim;
    return 0;
}