Cod sursa(job #475760)

Utilizator aladinaladin aladinn aladin Data 8 august 2010 13:35:18
Problema Cerere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>	
#define N 10003
int v[N],ok[N],c[N+10],a[N],b[N],n,y=0,i,s=0;;

void coad( int k)
{
	int p;
	if (v[k]!=0) 
	  ok[k]=c[y-v[k]];
	v[k]=-1;
	for (p=1;p<n;++p)
		if (a[p]==k) ++y,c[y]=b[p],coad(b[p]);
	y--;		
}
		

int main()
{
	
	freopen("cerere.in","r",stdin);
	freopen("cerere.out","w",stdout);
	scanf("%d",&n);
	for (i=1;i<=n;++i) scanf("%d",&v[i]);
	for (i=1;i<n;++i) 
	{
		scanf("%d %d",&a[i],&b[i]);
		s+=b[i];
	}
	s=(n*(n+1))/2-s;
	c[y]=s;
	coad(s);
	for (i=1;i<=n;++i)
	{
		if (ok[i]==0) printf("0 "); else
			printf("%d ",ok[ok[i]]+1);
	}
	/*	for (i=1;i<=n;++i)
	printf("%d ",ok[i]);
	
*/	return 0;}