Pagini recente » Cod sursa (job #1811003) | Cod sursa (job #2042853) | Cod sursa (job #961655) | Cod sursa (job #2354385) | Cod sursa (job #1846973)
#include <stdio.h>
#define nmax 50001
#define mmax 100001
using namespace std;
FILE *f=fopen("sortaret.in","r");
FILE *g=fopen("sortaret.out","w");
struct nod {int info; nod*urm;};
int n,m;
nod *prim[nmax];
int grint[nmax];
void add(nod*&prim,int x)
{ nod*p=new nod; p->info=x; p->urm=prim; prim=p;}
void Citire()
{ int i,x,y;
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=m;i++)
{ fscanf(f,"%d%d",&x,&y);
add(prim[x],y);
grint[y]++;
}
}
void SortareTopologica()
{ int ct=0,i; nod *p;
while(ct<n)
for(i=1;i<=n;i++)
if(grint[i]==0)
{ fprintf(g,"%d ",i);
ct++;
for(p=prim[i];p;p=p->urm) grint[p->info]--;
}
}
int main()
{ Citire();
SortareTopologica();
return 0;
}