Cod sursa(job #184470)

Utilizator marinMari n marin Data 23 aprilie 2008 18:05:05
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<stdio.h>

int *v[50011];
int x,sol[50100],k,n,i,nr[50100],viz[50100],m,y,t[50100];


void parc(int x){
int i;
viz[x]=1;

  for(i=1;i<=v[x][0];i++){
  if (viz[v[x][i]]==0)
  parc(v[x][i]);
  }


k++;
sol[k]=x;

}



int main(){


FILE *f=fopen("sortaret.in","r");
fscanf(f,"%d %d",&n,&m);

  for(i=1;i<=m;i++){
  fscanf(f,"%d %d",&x,&y);
  nr[x]++;
  t[y]=1;
  }

fclose(f);

  for(i=1;i<=n;i++){
  v[i]=new int [nr[i]+3];
  }


  for(i=1;i<=n;i++)
  v[i][0]=0;


FILE *ff=fopen("sortaret.in","r");
fscanf(ff,"%d %d",&n,&m);

  for(i=1;i<=m;i++){
  fscanf(f,"%d %d",&x,&y);
  //nr[x]++;
  v[x][0]++;
  v[x][v[x][0]]=y;
  }

fclose(ff);

for(i=1;i<=n;i++){
if(!t[i])



parc(i);
}

FILE *g=fopen("sortaret.out","w");
for(i=k;i>=1;i--)
fprintf(g,"%d ",sol[i]);
fclose(g);
return 0;
}