Pagini recente » Cod sursa (job #970099) | Cod sursa (job #553200) | Cod sursa (job #1830473) | Cod sursa (job #1031460) | Cod sursa (job #2047499)
#include <iostream>
#define N 16000
#include <fstream>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
int d[N],n,S[N];
bool viz[N];
int Smax=-1000000000;
void adaug(int a,int b);
struct nod { int info;
nod *next;
}*L[N];
void r()
{
in >> n;
for ( int i = 1 ;i <=n ; ++i)
in >> d[i];
int a,b;
while( in >> a >>b)
{
adaug(a,b);
adaug(b,a);
}
}
void adaug(int x , int y)
{
//adaug pe x la lista lui y
nod *aux=new nod;
aux->info=y;
aux->next=L[x];
L[x]=aux;
}
void DFS(int NOD)
{
viz[NOD]=true;
for(nod *aux=L[NOD]; aux ; aux=aux->next)
{
if(!viz[aux->info]){DFS(aux->info);
if(S[aux->info]>0)
S[NOD]+=S[aux->info];}
}
S[NOD] +=d[NOD];
Smax = max(Smax,S[NOD]);
}
int main()
{
r();
DFS(1);
cout <<Smax<<" ";
return 0;
}