Cod sursa(job #553363)

Utilizator n3msizN3msiz n3msiz Data 13 martie 2011 22:36:24
Problema Cerere Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>
#include<vector>
#define nmax 100010
int n,m,i,z,j,x,y,v[nmax],nr,k;

int T[nmax];

int main(){
	FILE*f=fopen("cerere.in","r");
	FILE*g=fopen("cerere.out","w");
	fscanf(f,"%d",&n);
	for(i=1;i<=n;i++){
		fscanf(f,"%d",&v[i]);
	}
	for(i=1;i<n;i++){
		fscanf(f,"%d %d",&x,&y);
		T[y]=x;
	}
	
	for(i=1;i<=n;i++){
		if(v[i]==0)
			fprintf(g,"0 ");
		else{
			z=v[i];
			m=i;
			nr=1;
			k=0;
			while(v[m]!=0){
				k++;
				while(z){
					//if(k!=1)
					//	nr++;
					z--;
					m=T[m];
				}
				if(k!=1)
					nr++;
				if(v[m]==0&&k==1){
					fprintf(g,"1 ");
					break;
				}
				
				if(v[m]==0 && k!=1){
					fprintf(g,"%d ",nr);
					break;
				}
				
				if(v[m]>0)
					z=v[m];
			}
		}
	}
	
	fclose(f);
	fclose(g);
	return 0;
}