Cod sursa(job #651225)

Utilizator FIIHapauRocaRoca Maria-Magdalena FIIHapauRoca Data 20 decembrie 2011 00:10:48
Problema Sortare topologica Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.95 kb
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define max 100001

typedef struct node
{int info;
struct node *next;}node;

int n,m,v[max],s[max],k;

FILE *fin;
FILE *fout;

node *list[max];
node *nod;

void add(int x,int y)
{node *nod;
nod=(node *)malloc(sizeof(node));
nod->info=x;
nod->next=list[y];
list[y]=nod;
}

void init()
{int index,x,y;
fscanf(fin,"%d",&n);
fscanf(fin,"%d",&m);

for(index=1;index<=m;index++)
{ fscanf(fin,"%d",&x);
  fscanf(fin,"%d",&y);
  add(y,x);}
}

void df(int index)
{node *nod;
 nod=list[index];
 v[index]=1;
while(nod)
{ if(v[nod->info]==0) 
    df(nod->info);
  nod=nod->next;}
s[++k]=index;}

int main()
{int index;
fin=fopen("sortaret.in","r");
fout=fopen("sortaret.out","w");
init();
for(index=1;index<=n;index++)
  if(v[index]==0) 
      df(index);
for(index=n;index>=1;index--)
   fprintf(fout,"%d ",s[index]); 
fclose(fin);fclose(fout);
free(nod);
return 0;}