Cod sursa(job #749972)

Utilizator gabrielvGabriel Vanca gabrielv Data 19 mai 2012 20:38:49
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<cstdio>
#include<vector>
#define NMAX 16005
#define oo (1<<30)
#define maxim(a,b) ((a>b)?(a):(b))

using namespace std;

vector < int > G[NMAX];
bool viz[NMAX];
int best[NMAX],N,Sol;
void citire()
{
    freopen("asmax.in","r",stdin);
	scanf("%d",&N);
    int i,x,y;
    for(i=1;i<=N;i++)
        scanf("%d",&best[i]);
    for(i=1;i<=N;i++)
    {
        scanf("%d %d",&x,&y);
        G[x].push_back(y);
        G[y].push_back(x);
    }
}
void DFS(int nod)
{
    viz[nod]=1;
    unsigned i;
    for(i=0;i<G[nod].size();i++)
        if(!viz[G[nod][i]])
        {
            DFS(G[nod][i]);
            best[nod]=maxim(best[nod],best[nod]+best[G[nod][i]]);
        }
}
void BVO()
{
    DFS(1);
    Sol=-oo;
    int i;
    for(i=1;i<=N;i++)
        Sol=maxim(Sol,best[i]);
}
void afisare()
{
    freopen("asmax.out","w",stdout);
    printf("%d\n",Sol);
}
int main()
{
    citire();
    BVO();
    afisare();
    return 0;
}