Cod sursa(job #802422)

Utilizator dariusdariusMarian Darius dariusdarius Data 26 octombrie 2012 17:46:01
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<stdio.h>
#include<vector>
using namespace std;
vector<int> v[50005];
int tim=0,n,m;
int stop[50005];
int viz[50005];
void dfs(int x)
{
	viz[x]=1;
	vector<int>::iterator it;
	for(it=v[x].begin();it!=v[x].end();it++)
		if(!viz[*it]) dfs(*it);
	stop[++tim]=x;
}
int main()
{
	freopen("sortaret.in","r",stdin);
	freopen("sortaret.out","w",stdout);
	int x,y,i;
	scanf("%d%d",&n,&m);
	for(i=1;i<=m;i++)
	{
		scanf("%d%d",&x,&y);
		v[x].push_back(y);
	}
	for(i=1;i<=n;i++)
		if(viz[i]==0)
			dfs(i);
	for(i=n;i>=2;i--)
		printf("%d ",stop[i]);
	printf("%d\n",stop[1]);
return 0;
}