Cod sursa(job #651350)

Utilizator ramona.zahariaRamona ramona.zaharia Data 20 decembrie 2011 09:11:25
Problema Sortare topologica Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.13 kb
#include<stdio.h>
#include<stdlib.h>
#define NR 100004
FILE *fis, *rez;
int n,m,viz[NR],contor1,contor2,varf[NR];
typedef struct Node {int inf; 
                     struct Nod *urm; } Nod;
Nod *x[NR];

 
void deschidere ()
{fis=fopen("sortaret.in", "r");
 rez=fopen("sortaret.out", "w");}
 
void inchidere ()
{fclose (fis);
fclose(rez);}

int adauga(int a, int b)
{Nod *p;
if(!(ptr=(Nod*)malloc(sizeof(Nod)))) return 0;
p->inf=b;
p->urm=x[a];
x[a]=p;
return 1;}

void cit()
{int a, b;
for(contor1=0;contor1<m;++contor1)
    {fscanf(f,"%d%d",&a,&b);
     if(adauga(a,b)!=0)
          {printf("greseala");
            return ;}
}}

 void scriere ()
{for (contor1=1;contor1<=n;++contor1)
    fprintf(g,"%d ",varf[contor1]);}
 

 void parc_DFS(int stiva)
{Nod *p;
viz[stiva]=1;
for(p=x[stiva]; p!=0; p=p->urm)
   if(viz[p->inf]==0)
       parc_DFS(p->inf);
contor2=contor2-1;
varf[contor2]=stiva;}   

int main ()
{deschidere();
fscanf(fis,"%d%d", &n,&m);
cit();
contor2=n+1;
for(contor1=1;contor1<=n;contor1++)
   if(viz[contor1]==0)
         parc_DFS(contor1);
scriere();
inchidere();
return 0;}