Cod sursa(job #774034)

Utilizator lily3Moldovan Liliana lily3 Data 3 august 2012 11:20:44
Problema Cerere Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<fstream>
#include<vector>
#include<cstring>
using namespace std;

int i,j,n,m,x,y,g[100001],s[100001],tata[100001],nr;
vector<int> a[100001];
int viz[100001];
int det(int x)
{
	if(g[x])
		++nr,det(g[x]);
	return nr;
}
int main()
{
	freopen("cerere.in","r",stdin);
	freopen("cerere.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;++i)
		scanf("%d",&s[i]);
	for(i=1;i<n;++i)
	{
		scanf("%d%d",&x,&y);
		a[y].push_back(x);
		tata[y]=x;
	}
	for(i=1;i<=n;++i)
		if(s[i])
	{
		x=i;
		for(j=1;j<=s[i];++j)
			x=tata[x];
		g[i]=x;
	}
	for(i=1;i<=n;++i)
	    nr=0,printf("%d ",det(i));
	return 0;
}