Cod sursa(job #331284)

Utilizator adrianaqtreus adriana adrianaqt Data 13 iulie 2009 14:55:18
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<fstream.h>
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int N,M,X,Y;

struct nod
{int info;
nod* urm;
};
nod* l[5000];
unsigned a[5000],s[5000],nr=0;
void init()
{f>>N;
for(int i=1;i<=N;i++)l[i]=NULL;}

void adaug(nod*& prim, int x)
{nod* p=new nod;
    p->info=x;
    p->urm=prim;
    prim=p;
}

void creez()
{f>>M;
while(f>>X>>Y)adaug(l[X],Y);
}

void df(int x)
{  s[x]=1;
    for(nod*p=l[x];p;p=p->urm)
     if(s[p->info]==0)
      df(p->info);
     a[++nr]=x;
}
int main()
{init();
creez();
for(unsigned i=1;i<=N;i++)
if(s[i]==0)df(i);
     for(i=nr;i>=1;i--)g<<a[i]<<" ";
}