Cod sursa(job #651316)

Utilizator vladbaesuVlad Baesu vladbaesu Data 20 decembrie 2011 07:55:47
Problema Sortare topologica Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.72 kb
#include<stdio.h>
#define NRNOD 100005
typedef struct Nod
{	int info; 
	struct Nod *next;
} Nod;
Nod *G[NRNOD];
int vizitat[NRNOD],N,M,k,sort[NRNOD];

void dfs(int x)
{
	Nod *p;
	vizitat[x]=1;
	for(p=G[x];p;p=p->next)
	if(!vizitat[p->info])
	{dfs(p->info);}
	sort[++k]=x;
}

int main()
{
	FILE *intrare,*iesire;
	int i,x,y;
	intrare=fopen("sortaret.in","r");
	iesire=fopen("sortaret.out","w");
	fscanf(intrare,"%d %d",&n,&m);

	for(i=1;i<=n;i++)
	{
		fscanf(intrare,"%d %d",&x,&y);
		Nod *p,*q;

		if(!(p=(Nod*)malloc(sizeof(Nod)))) return 1;
		p->info=y;
		p->next=G[x];

		G[x]=p;
	}



	for(i=1;i<=n;i++) if(vizitat[i]==0) dfs(i); 

	for(i=n;i>=1;i--) fprintf(iesire,"%d ",sort[i]);

	fclose(intrare);fclose(iesire);
	return 0;   
}