Cod sursa(job #65708)

Utilizator znakeuJurba Andrei znakeu Data 11 iunie 2007 16:24:49
Problema Arbore Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
struct angajat
{
	int sef;
	int money;
	int sub[10000];
};
angajat v[100000];

void give (int p, int s)
{
	int i;
	v[p].money+=s;
	for (i=1; i<=v[p].sub[0]; i++)
	{
		give (v[p].sub[i],s);
	}
}

int main()
{
	int m,n,i,j,x,y,a,f;
	FILE *in=fopen("arbore.in","r");
	FILE *out=fopen("arbore.out","w");
	fscanf(in,"%d%d",&n,&m);
	for (i=1; i<n; i++)
	{
		fscanf(in,"%d%d",&x,&y);
		v[x].sub[++v[x].sub[0]]=y;
		v[y].sef=x;		
	}
	for (i=0; i<m; i++)
	{
		fscanf(in,"%d",&a);
		if (a==1)
		{
			fscanf(in,"%d%d",&x,&y);
			give(x,y);			
		}
		if (a==2)
		{
			fscanf(in,"%d",&x);
			f=0;
			j=0;
			while (f==0)
			{
				if (v[j].money==x)
					f=1;
				else
					j++;				
			}
			if (f)
				fprintf(out,"%d\n",j);
		}
	}
	fclose(in);
	fclose(out);
	return 0;
}