Cod sursa(job #773290)

Utilizator valentina506Moraru Valentina valentina506 Data 1 august 2012 13:07:30
Problema Cerere Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<fstream>
using namespace std;
int n,i,j,t[100001],uz[100001],x,y,c[100001];

int df(int x)
{
	int i,tx,xi;
	if(uz[x]>0)
		return uz[x];
	else
		if(c[x]==0||t[x]==0||x==0)
			return 0;
		else
		{
			xi=x;
			i=c[x];
			while(i--)
				x=t[x];
			uz[xi]=uz[xi]+df(x)+1;
			return uz[xi];
		}
	
}
	
int main()
{
	ifstream f("cerere.in");
	ofstream g("cerere.out");
	
	f>>n;
	for(i=1;i<=n;++i)
		f>>c[i];
	
	for(i=1;i<n;++i)
	{
		f>>x>>y;
		t[y]=x;
	}
	for(i=1;i<=n;++i)
	{
		if(c[i]&&t[i]&&!uz[i])
			df(i);
		g<<uz[i]<<" ";
	}
	
	return 0;
}