Pagini recente » Cod sursa (job #2790246) | Cod sursa (job #462821) | Cod sursa (job #727943) | Cod sursa (job #164773)
Cod sursa(job #164773)
#include <stdio.h>
#define MAX 50000
FILE *f,*g;
int *pred;
int n,m,i,a,b,k,printed;
int c[MAX];
struct lista{
int a;
lista *next;
};
lista *scs[MAX];
lista *nr;
int main(){
pred = new int[MAX];
f=fopen("sortaret.in","r");
g=fopen("sortaret.out","w");
fscanf(f,"%d %d",&n,&m);
for(i=0;i<m;i++){
fscanf(f,"%d %d",&a,&b);
pred[b]++;
nr=new lista;
nr->next=scs[a];
nr->a = b;
scs[a]=nr;
}
while(printed<n){
k=0;
for(i=1;i<=n;i++)
if(pred[i]==0) c[k++]=i;
for(i=0;i<k;i++){
fprintf(g,"%d\n",c[i]);
printed++;
pred[c[i]]=-1;
nr=scs[c[i]];
while(nr){
pred[nr->a]--;
nr=nr->next;
}
}
}
fclose(g);
return 0;
}