Cod sursa(job #912897)

Utilizator The_DisturbedBungiu Alexandru The_Disturbed Data 12 martie 2013 23:21:55
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<cstdio>
int m,n,i,j,x,y,gr[50013];
struct point
{
	int x;
	point *y;
}*g[50013],*p,*q,*w,*t;
int main()
{
	freopen("sortaret.in","r",stdin);
	freopen("sortaret.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(i=0;i<m;++i)
	{
		scanf("%d%d",&x,&y);
		p=new point;
		p->x=y;
		p->y=g[x];
		g[x]=p;
		++gr[y];
	}
	p=NULL;
	for(i=1;i<=n;++i) if(gr[i]==0)
	{
		q=new point;
		q->x=i;
		q->y=p;
		p=q;
	}
	for(q=p;q->y!=NULL;q=q->y);
	for(i=0;i<n;++i)
	{
		x=p->x;
		printf("%d ",x);
		for(w=g[x];w!=NULL;w=w->y)
		{
			--gr[w->x];
			if(gr[w->x]==0)
			{
				t=new point;
				t->x=w->x;
				t->y=NULL;
				q->y=t;
				q=t;
			}
		}
		t=p;
		p=p->y;
		delete(t);
	}
	return 0;
}