Cod sursa(job #1582892)

Utilizator sicsicFMI-Coteanu Vlad sicsic Data 28 ianuarie 2016 16:38:44
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<fstream>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int V[16001],D[16001],N,T[16001],Maxi=-99999999;
bool U[16001];
struct lista{int nod; lista *leg;} *G[16001];
void adaug(int i,int j)
{
    lista *p;
    p=new lista;
    p->nod=j;
    p->leg=G[i];
    G[i]=p;
}
void citire()
{
    f>>N;
    for(int i=1;i<=N;++i) f>>V[i];
    int i,j;
    for(int c=1;c<N;++c)
    {
        f>>i>>j;
        adaug(i,j);
        adaug(j,i);
    }
}
void DFS(int nod)
{
    D[nod]=V[nod];
    U[nod]=1;
    for(lista* p=G[nod];p;p=p->leg)
     if(!U[p->nod])
     {
         DFS(p->nod);
         if(D[nod]+D[p->nod]>D[nod]) D[nod]+=D[p->nod];
    }
}
int main()
{
    citire();
    DFS(1);
    for(int i=1;i<=N;++i) if(D[i]>Maxi) Maxi=D[i];
    g<<Maxi<<'\n';
    return 0;
}