Cod sursa(job #703427)

Utilizator Anonymous1010Chilivercu Cristian Anonymous1010 Data 2 martie 2012 12:23:31
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<stdio.h>
#include<vector>

using namespace std;

int gr[500002],c[50002],n,m,i,l,r,j;
vector <int>a[50002];

int main()
{
	freopen("sortaret.in","r",stdin);
	freopen("sortaret.out","w",stdout);
	
	scanf("%d %d",&n,&m);
	
	for(i=1;i<=m;i++)
	{
		scanf("%d %d",&l,&r);
		a[l].push_back(r);
		gr[r]++;
	}
	
	for(i=1;i<=n;i++)
		if(gr[i]==0)
		{
			c[0]=1;
			c[1]=i;
			printf("%d ",i);
			i=n+1;
		}
		
	for(i=1;i<=c[0];i++)
	{
		m=a[c[i]].size();
		for(j=0;j<m;j++)
			if(gr[a[c[i]][j]])
			{
				gr[a[c[i]][j]]--;
				if(!gr[a[c[i]][j]])
				{
					c[0]++;
					c[c[0]]=a[c[i]][j];
					printf("%d ",c[c[0]]);
				}
			}
	}
	
	return 0;
}