Pagini recente » Cod sursa (job #922452) | Cod sursa (job #2237120) | Cod sursa (job #1895920) | Cod sursa (job #969791) | Cod sursa (job #482015)
Cod sursa(job #482015)
#include <cstdio>
#include <iostream>
#define DN 16005
#define A for(i=1; i<=n; ++i)
using namespace std;
struct nod {
int x;
nod *urm;
} *v[DN];
bool viz[DN];
int val[DN],b[DN];
void adaugare(int x,int y) {
nod *p;
p=new nod;
p->x=y;
p->urm=v[x];
v[x]=p;
}
void dfs(int sursa) {
b[sursa]=val[sursa];
viz[sursa]=true;
nod *p;
for(p=v[sursa];p!=NULL; p=p->urm)
if(!viz[p->x]) {
dfs(p->x);
b[sursa]=max(b[sursa],b[sursa]+b[p->x]);
}
}
int main()
{
int n,i,x,y,sol=-100000;
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d",&n);
A scanf("%d",&val[i]);
A {
scanf("%d %d",&x,&y);
adaugare(x,y);
adaugare(y,x);
}
dfs(1);
A sol=max(sol,b[i]);
printf("%d",sol);
return 0;
}