Pagini recente » Cod sursa (job #2647703) | Cod sursa (job #2228799) | Cod sursa (job #2044826) | Cod sursa (job #2115343) | Cod sursa (job #148054)
Cod sursa(job #148054)
#include<stdio.h>
struct nod{ long int inf; nod *next;};
nod *lv[100],*prim,*ultim,*p,*pr;
long int n,m,i,x,y,grin[100];
void punev(long int a, long int b);
void punec(nod* &prim, nod* &ultim, long int aa);
int main()
{ FILE *f=fopen("sortaret.in","r"),
*g=fopen("sortaret.out","w");
fscanf(f,"%ld%ld",&n,&m);
for(i=1;i<=m;i++)
{ fscanf(f,"%ld%ld",&x,&y);
punev(x,y); grin[y]++;
}
pr=prim;
for(i=1;i<=n;i++) if(grin[i]==0) punec(prim,ultim,i);
while(prim)
{ p=lv[prim->inf];
while(p) { grin[p->inf]--;
if(!grin[p->inf]) punec(prim, ultim,p->inf);
p=p->next;
}
prim=prim->next;
}
while(pr) { fprintf(g,"%ld ",pr->inf); pr=pr->next;}
fcloseall();
return 0;
}
void punev(long int a, long int b)
{ nod *q;
q=new nod;
q->inf=b;
if(!lv[a]){ q->next=0; lv[a]=q;return;}
q->next=lv[a];
lv[a]=q;
}
void punec(nod* &prim, nod* &ultim, long int aa)
{ nod *q;
q=new nod;
q->inf=aa;
q->next=0;
if(!prim){prim=ultim=q;return;}
ultim->next=q;
ultim=q;
}