Cod sursa(job #262755)

Utilizator sory1806Sandu Sorina-Gabriela sory1806 Data 19 februarie 2009 17:00:58
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<stdio.h>
#define max 50010
long s[max], x[max], n, m, nr;
int vz[max];
struct elem
{       long vf;
	elem *urm;
}	*a[max], *q;
FILE *f, *g;

void read()
{       long i, k, l;
	f=fopen("sortaret.in", "r");
	fscanf(f, "%ld%ld", &n, &m);
	for(i=1; i<=m; i++)
	{	fscanf(f, "%ld%ld", &k, &l);
		vz[k]=1;
		q=new elem;
		q->vf=k;
		q->urm=a[l];
		a[l]=q;
	}
}

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

int main()
{       long i;
	read();
	for(i=1; i<=n; i++)
		if(vz[i]==0)
		{	df(i, 1);
			nr++;
			x[nr]=i;
		}
	g=fopen("sortaret.out", "w");
	for(i=n; i>=1; i--)
		fprintf(g, "%ld ", x[i]);
	fclose(g);
	return 0;
}