Cod sursa(job #698691)

Utilizator valentina506Moraru Valentina valentina506 Data 29 februarie 2012 15:30:45
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<fstream>
#include<vector>
using namespace std;
int n,i,j,cost[16010],sum[16010],x,y,maxim;
bool uz[16010];
vector<int> a[16001];

void df(int x)
{
	int i;
	sum[x]=cost[x];
	uz[x]=1;
	for(i=0;i<a[x].size();++i)
		if(!uz[a[x][i]])
		{
			uz[a[x][i]]=1;
			df(a[x][i]);
			if(sum[a[x][i]]>0)
				sum[x]+=sum[a[x][i]];
		}
}

int main()
{
	freopen("asmax.in","r",stdin);
	freopen("asmax.out","w",stdout);
	scanf("%d ",&n);
	for(i=1;i<=n;++i)
		scanf("%d ",&cost[i]);
	for(i=1;i<n;++i)
	{
		scanf("%d %d",&x,&y);
		a[x].push_back(y);
		a[y].push_back(x);
	}
	
	df(1);
	maxim=-1<<30;
	for(i=1;i<=n;++i)
		if(sum[i]>maxim)
			maxim=sum[i];
		printf("%d ",maxim);
		
	return 0;
}