Cod sursa(job #410418)

Utilizator BooZZySandu Bogdan BooZZy Data 4 martie 2010 13:05:42
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<stdio.h>
#include<vector>
using namespace std;
vector <int> f[50005];
int viz[50005],n,m,x,y,c[50005],i,k,v[50005];
void dfs(int nod)
{
	int N;
	viz[nod]=1;
	N=f[nod].size();
	for(int j=0;j<N;j++)
		if(!viz[f[nod][j]])
			dfs(f[nod][j]);
	c[k--]=nod;
}
int main()
{
	freopen("sortaret.in","r",stdin);
	freopen("sortaret.out","w",stdout);
	scanf("%d %d",&n,&m);
	for(i=1;i<=n;i++)
	{
		scanf("%d %d",&x,&y);
		f[x].push_back(y);
		v[y]++;
	}
	for(i=1;i<=n;i++)
		if(!v[i])
		{
			f[0].push_back(i);
		}
	k=n;
	dfs(0);
	for(i=1;i<=n;i++)
		printf("%d ",c[i]);
	return 0;
}