Cod sursa(job #260485)

Utilizator sory1806Sandu Sorina-Gabriela sory1806 Data 17 februarie 2009 09:20:52
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>
#define max 100
long s[max], x[max], vz[max], n, m;
struct elem
{       long vf;
	elem *urm;
}	*a[max], *q;
struct cerere
{       long nc, ns;
	cerere *urm;
}	*b[max], *w;
FILE *f, *g;

void read()
{       long i, k, l;
	f=fopen("stramosi.in", "r");
	fscanf(f, "%ld%ld", &n, &m);
	for(i=1; i<=n; i++)
	{	fscanf(f, "%ld", &k);
		if(k!=0)
		{	q=new elem;
			q->vf=i;
			q->urm=a[k];
			a[k]=q;
		}
	}
	for(i=1; i<=m; i++)
	{	fscanf(f, "%ld%ld", &k, &l);
		w=new cerere;
		w->ns=l; w->nc=i;
		w->urm=b[k];
		b[k]=w;
	}
}

void solve(int k)
{       int l, o;
	l=s[k];
	w=b[l];
	while(w)
	{	o=w->ns;
		if(o>k)
			x[w->nc]=0;
		else
			x[w->nc]=k-o;
		w=w->urm;
	}
}

void df(int z,int k)
{       s[k]=z;
	vz[z]=1;
	solve(k);
	q=a[z];
	while(q)
	{       df(q->vf, k+1);
		q=q->urm;
	}
}

int main()
{       read();

	return 0;
}