Cod sursa(job #482015)

Utilizator S7012MYPetru Trimbitas S7012MY Data 2 septembrie 2010 13:12:16
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#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;
}