Cod sursa(job #622966)

Utilizator wamfeverDobos Ionut wamfever Data 18 octombrie 2011 19:38:27
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream.h>
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int k,i,j,n,m,stiva[100001],U[100001];
struct lista { int nod;
               lista *urm;
			 } * G[100001];
void adauga(int i, int j)
{ lista *p;
p=G[i];
while(p && p->nod - j) p=p->urm;
if(!p) {
p=new lista;
p->nod=j;
p->urm=G[i];
G[i]=p;}
}

void citeste()
{ int i,j;
  f>>n>>m;
  while(m--) { f>>i>>j;
               adauga(i,j);
            }
}

void DF(int nod)
{ lista *p;
  U[nod]=1;
  for(p=G[nod];p!=NULL;p=p->urm) if(!U[p->nod]) DF(p->nod);
  stiva[++k]=nod;
}

	
int main()
{ citeste();/*
  lista *p = G[6];
  while(p) g << p->nod << " ", p = p->urm;
  g << "\n";*/
  for(i=1;i<=n;i++) if(!U[i]) DF(i);
  for(i=n;i>=1;i--) g<<stiva[i]<<" ";
  g<<"\n";
  f.close();
  g.close();
  return 0;
}