Pagini recente » Cod sursa (job #1863901) | Cod sursa (job #525750) | Cod sursa (job #2647023) | Cod sursa (job #680103) | Cod sursa (job #318160)
Cod sursa(job #318160)
#include<stdio.h>
#include<stdlib.h>
struct nod { int val; struct nod* urm; }*d[50001];
int dnod=sizeof(struct nod*);
int n,m;
int viz[50001];
void scoatere(int k)
{
int ii;
for(ii=1; ii<=n; ii++)
if(d[ii]->urm){ struct nod *ax;
ax=d[ii];
while(ax->urm){if(ax->urm->val==k){ax->urm=ax->urm->urm; d[ii]->val--;}
else ax=ax->urm;
}
}
}
int main(void){
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
scanf("%d %d",&n,&m);
int i;
for(i=1; i<=n; i++){d[i]=malloc(dnod); d[i]->urm=NULL; d[i]->val=0; }
for(i=1; i<=m; i++){ int x,y; scanf("%d %d",&x,&y);
struct nod *p,*nc; nc=malloc(dnod);
p=d[x];
while(p->urm)p=p->urm;
nc->val=y; nc->urm=NULL; p->urm=nc;
d[x]->val++;
}
struct nod *lst,*ult; lst=ult=malloc(dnod);
ult=lst;
int noduri=n;
int j;
for(i=1; i<=n; i++)if(d[i]->val==0 && viz[i]==0)
{ viz[i]=1;
noduri--;
struct nod *p=malloc(dnod);
p->urm=NULL; p->val=i;
ult->urm=p; ult=p;
scoatere(i);
}
struct nod *au; au=malloc(dnod);
au=lst->urm;
while(au){printf("%d \n",au->val); au=au->urm;}
printf("%d \n",d[9]->val);
return 0;
}