Cod sursa(job #271641)

Utilizator sigridMaria Stanciu sigrid Data 5 martie 2009 18:51:17
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<fstream.h>  
#include<stdlib.h>     
#define dim 50001
   
//char (*a)[dim]=new char[dim][dim];
int *a[dim];
int gri[dim],ok;

int main()
{
ifstream f("sortaret.in");
ofstream g("sortaret.out");
unsigned long n,m,i,j,x,y;
f>>n>>m;

/*for(i=1;i<=n;i++)
 for(j=1;j<=n;j++) a[i][j]=0;*/

for(i=1;i<=n;i++)
 {
  a[i]=(int *)realloc(a[i], sizeof(int));
  a[i][0]=0;
 }

for(i=1;i<=m;i++)
  {f>>x>>y;
/*   if(!a[x][y]) gri[y]++;
   a[x][y]=1;*/
   a[x][0]++;
   a[x]=(int *)realloc(a[x], (a[x][0]+1)*sizeof(int));
   a[x][a[x][0]]=y;
   gri[y]++;
  }
f.close();

unsigned long nn=0;

while(nn<n)
 {
  for(i=1;i<=n;i++)

   if(gri[i]==0)
    {
     //contorizez numarul de varfuri eliminate
     nn++;

     //il adaug
     g<<i<<" ";

     //il elimin
     for(j=1;j<=a[i][0];j++)
       gri[a[i][j]]--;

     gri[i]=-1;
   }
}

g<<'\n';
g.close();
return 0;
}