Cod sursa(job #574659)

Utilizator dmgciubotaruCiubotaru Gabriel dmgciubotaru Data 7 aprilie 2011 13:45:18
Problema Sortare topologica Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>
#include <malloc.h>


typedef struct nod nod;

struct nod 
{
	int x;
	nod *nx;
};

void rsd(int i,nod **v,FILE *g)
{
	nod *x;
	fprintf(g,"%d ",i+1);
	x=v[i];
	while(x!=NULL)
	{
		rsd(x->x,v,g);
		x=x->nx;
	}
}

int main()
{
	FILE *f,*g;	
	int i,n,m,a,b;
	int *ok;
	nod **v;
	nod *x;
	f=fopen("sortaret.in", "r");
	g=fopen("sortaret.out", "w");
	fscanf(f,"%d%d",&n,&m);
	v=(nod **)malloc(n*sizeof(nod *));
	ok=(int *)malloc(n*sizeof(int));
	for(i=0;i<n;i++)
	{
		v[i]=NULL;
		ok[i]=0;
	}
	for(i=0;i<m;i++)
	{
		x=(nod *)malloc(sizeof (nod));
		fscanf(f,"%d%d",&a,&b);
		a--;
		b--;
		x->x=b;
		x->nx=v[a];
		v[a]=x;
		ok[b]=1;
	}
	for(i=0;i<n;i++)
		if(ok[i]==0)
		{
			rsd(i,v,g);
			fclose(g);
			return(0);
		}
	return 0;
}