Cod sursa(job #870555)

Utilizator deea101Andreea deea101 Data 3 februarie 2013 16:50:01
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream>
#include <vector>
#define nmax 16001
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");

vector < int > v[nmax];
int n,val[nmax],smax,s[nmax],viz[nmax];

void dfs(int nod)
{
	s[nod]=val[nod]; int i;
	viz[nod]=1;
	for(i=0;i<v[nod].size();i++)
	{
		if(!viz[v[nod][i]])
		{
			dfs(v[nod][i]);
			if(s[v[nod][i]]>0) s[nod]+=s[v[nod][i]];
		}
	}
	if(s[nod]>smax) smax=s[nod];
}
			
		
int main()
{
	int i,x,y;
	f>>n;
	for(i=1;i<=n;i++)
		f>>val[i];
	for(i=1;i<n;i++)
	{
		f>>x>>y;
		v[x].push_back(y);
		v[y].push_back(x);
	}
	
	smax=val[1];
	dfs(1); 
	
	g<<smax;
}