Cod sursa(job #650891)

Utilizator FIIBarMazNeaFIIBarcanMaziluNeagu FIIBarMazNea Data 19 decembrie 2011 04:48:38
Problema Sortare topologica Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.74 kb

#include<stdio.h>
#include<stdlib.h>
#define NMAX 100001
typedef struct Node
{	int info; 
	struct Node *next;
}Node;
Node *G[NMAX];
FILE *inf,*outf;
int viz[NMAX],N,M,k,sort[NMAX];
void citire()
{
inf=fopen("sortaret.in","r");
int i,z,y;
fscanf(inf,"%d %d",&N,&M);
for(i=1;i<=M;i++)
{
fscanf(inf,"%d %d",&z,&y);
Node *p,*q;
if(!(p=(Node*)malloc(sizeof(Node)))) return ;
p->info=y;
p->next=G[z];
G[z]=p;}
}
void Dfs(int x)
{Node *p;
viz[x]=1;
for(p=G[x];p;p=p->next)
if(!viz[p->info])
{Dfs(p->info);}
sort[++k]=x;}

int main()
{
int i;
outf=fopen("sortaret.out","w");
citire();
for(i=1;i<=N;i++)
if(viz[i]==0) { Dfs(i); }
for(i=N;i>=1;i--)
fprintf(outf,"%d ",sort[i]);
fclose(inf);
fclose(outf);
return 0;   
}