Cod sursa(job #1356760)

Utilizator radu2004GOLD radu radu2004 Data 23 februarie 2015 16:13:02
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#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;
}