Cod sursa(job #309269)

Utilizator misuvdPopovici Mihai misuvd Data 29 aprilie 2009 22:54:14
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<fstream.h>
int ok,m,n,contor[50000],i,j,c[100],k,u;
struct nod
{
int succ;
nod *urm;
};
nod* a[100];
void adaug(int i,int j)
{
  nod *c,*d;
  contor[j]++;
  c=a[i];
  d=new nod;
  d->succ=j;
  d->urm=0;
   if(c==0)
    a[i]=d;
    else
    {
    while(c->urm)
     c=c->urm;
     c->urm=d;
    }
}
void actual(int i)
{
 nod* c=a[i];
 while(c)
 {
 contor[c->succ]--;
 c=c->urm;
 }
}
 int main()
 {
  ifstream f("sortaret.in");
  ofstream g("sortare.out");
  f>>n>>u;
  for(i=1;i<=n;i++)
  {
   contor[i]=0;
   a[i]=0;
  }
  m=n;
 for(k=1;k<=u;k++)
 {
   f>>i>>j;
   if(i)
   adaug(i,j);
   }
  do
  {
  ok=0;
  for(i=1;i<=n;i++)
  if(contor[i]==0)
  {
   ok=1;
   m--;
   contor[i]=-1;
   actual(i);
   c[k]=i;
   k++;
   }
   }while(m&&gasit);
   if(m==0)
   {
   for(i=0;i<k;i++)
   g<<c[i]<<" ";
   g<<"ok";
   }
   return 0;
}