Cod sursa(job #144717)

Utilizator FlorianFlorian Marcu Florian Data 27 februarie 2008 21:28:08
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<stdio.h>
FILE*f=fopen("sortaret.in","r");
FILE*g=fopen("sortaret.out","w");
int post[50003],p;
short viz[50002];
typedef struct NOD
  {
  int info;
  NOD *urm;
  }Nod;
Nod *prim[50001];
int n,m;
void read()
  {
  fscanf(f,"%d %d",&n,&m);
  int x,y;
  Nod *p;
  while(m--)
   {
   fscanf(f,"%d %d",&x,&y);
   //inserez informatia y in prim[x]
   p=new Nod;
   p->info=y;
   if(prim[x]==NULL)
    {
    p->urm=NULL;
    prim[x]=p;
    }
   else
    {
    p->urm=prim[x];
    prim[x]=p;
    }
   }
  }
void DF(int x)
  {
  Nod *q;
  viz[x]=1;
  for(q=prim[x];q;q=q->urm)
    if(viz[q->info]==0) DF(q->info);
  post[++p]=x;
  }
int main()
 {
 read();
 int i;
 for(i=1;i<=n;++i) if(viz[i]==0) DF(i);
 for(i=p;i>0;--i) fprintf(g,"%d ",post[i]);
 return 0;
 }