Cod sursa(job #414940)

Utilizator bora_marianBora marian bora_marian Data 10 martie 2010 18:47:20
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<fstream>
using namespace std;
int n,cost[16005],maxim=-100000000;
int vizitat[16005];
struct nod{
	int info;
    nod *next;};
nod *g[16005];	
void dfs(int k);
void adauga(int a,int b);
int costulmax(int k);
ofstream fout("asmax.out");
int main ()
{
	ifstream fin("asmax.in");
	fin>>n;
	int i;
	for(i=1;i<=n;i++)
		fin>>cost[i];
	for(i=1;i<n;i++)
	{
		int a,b;
		fin>>a>>b;
		adauga(a,b);
		adauga(b,a);
	}
	dfs(1);
	fout<<maxim;
	return 0;
}
void dfs(int k)
{
	int nrv=0;
	vizitat[k]=1;
	for(nod *p=g[k];p;p=p->next)
	{
		nrv++;
		if(vizitat[p->info]==0)
		{
			dfs (p->info);
			if (cost[k]<cost[k]+cost[p->info])
				cost[k]=cost[k]+cost[p->info];
			if (cost[k]>maxim)
				maxim=cost[k];
		}
	}
	if (nrv==1)
		if (cost[k]>maxim)
			maxim=cost[k];
			
}
void adauga(int a,int b)
{
	nod *p;
	p=new nod;
	p->info=b;
	p->next=g[a];
	g[a]=p;
}