Pagini recente » Cod sursa (job #1038097) | Cod sursa (job #2775891) | Cod sursa (job #2008435) | Cod sursa (job #3175330) | Cod sursa (job #1009436)
#include <stdio.h>
FILE *f,*g;
int i,prim,ultim,s[50001],n,m,x,y;
struct nod {int val;nod *urm;};
nod *out[50001],*in[50001];
using namespace std;
void add (int x,int y)
{
nod *t;
t=new nod;
t->val=y;
t->urm=out[x];
out[x]=t;
t=new nod;
t->val=x;
t->urm=in[y];
in[y]=t;
}
int main()
{f=fopen ("sortaret.in","r");
g=fopen ("sortaret.out","w");
fscanf (f,"%d%d",&n,&m);
for (i=1;i<=m;i++)
{
fscanf (f,"%d%d",&x,&y);
add (x,y);
}
for (i=1;i<=n;i++) if (in[i]==NULL) s[++ultim]=i;
prim=1;
nod *t;
while (prim<=ultim)
{
for (t=out[s[prim]];t!=NULL;t=t->urm)
{
in[t->val]=in[t->val]->urm;
if (in[t->val]==NULL) s[++ultim]=t->val;
}
fprintf (g,"%d ",s[prim++]);
}
return 0;
}