Cod sursa(job #645177)

Utilizator attila3453Geiszt Attila attila3453 Data 8 decembrie 2011 19:53:53
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>
#include <vector>

using namespace std;

int n, m;

vector<int> vecini[100001], sol;
int vizitat[100001], nivel[100001];

void dfs(int nod)
{
	vector<int>::iterator i;
	
	vizitat[nod] = true;
	
	for(i = vecini[nod].begin();i != vecini[nod].end();i++)
		if(vizitat[*i] == 0)
			dfs(*i);
	
	sol.push_back(nod);
}

int main()
{
	freopen("sortaret.in", "r", stdin);
	freopen("sortaret.out", "w", stdout);
	
	scanf("%d %d", &n, &m);
	
	int i, a, b;
	
	for(i = 0;i < m;i++)
	{
		scanf("%d %d", &a, &b);
		
		vecini[a].push_back(b);
	}
	
	for(i = 1;i<=n;i++)
		if(vizitat[i] == 0)
			dfs(i);
			
	for(i = sol.size() - 1;i >= 0;i--)
		printf("%d ", sol[i]);
}