Cod sursa(job #1050798)

Utilizator rvnzphrvnzph rvnzph Data 9 decembrie 2013 10:01:51
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>
#include <cstring>
#include <vector>

using namespace std;

#define NLEN 50001

vector <int> g[NLEN];
int v[NLEN];
int use[NLEN];

void dfs(int node)
{
	use[node]=1;
	for(vector <int>::iterator it=g[node].begin();it!=g[node].end();++it)
		if(!use[*it])
			dfs(*it);

	v[++v[0]]=node;
}

int main()
{
	freopen("sortaret.in","r",stdin);
	freopen("sortaret.out","w",stdout);

	memset(v,0,sizeof(v));
	memset(use,0,sizeof(use));

	int N,M;
	scanf("%d%d",&N,&M);

	while(M--)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		g[x].push_back(y);
	}

	for(int i=1;i<=N;++i)
		if(!use[i])
			dfs(i);

	for(int i=N;i>0;--i)
		printf("%d ",v[i]);
	printf("\n");

	return 0;
}