Cod sursa(job #398177)

Utilizator PopaStefanPopa Stefan PopaStefan Data 18 februarie 2010 08:52:53
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<fstream>
#define nmax 50001

using namespace std;

ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

struct nod
  {int inf;
   struct nod *urm;
  };
nod *l[nmax];

int viz[nmax],postordine[nmax],nr=0;

void dfs(int x)
{nod *c;
viz[x]=1;
for(c=l[x];c!=NULL;c=c->urm)
   if(viz[c->inf]==0) dfs(c->inf);
nr++;
postordine[nr]=x;

}

int main()
{int x,y,i,n=0;
nod *nou;
while(fin>>x>>y)
  {nou=new nod;
   nou->inf=y;
   nou->urm=l[x];
   l[x]=nou;
   n++;
  }
for(i=1;i<=n;i++)
  if(viz[i]==0)
    dfs(i);
for(i=n;i>=1;i--)
  fout<<postordine[i]<<" ";
fin.close();
fout.close();
return 0;
}