Cod sursa(job #1219990)

Utilizator ptquake10ptquake10 ptquake10 Data 16 august 2014 11:27:01
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <stack>
#include <algorithm>

using namespace std;

int n, m;
vector<int> g[50005];
bool viz[50005];
stack<int> s;

void dfs(int x) {
	viz[x] = 1;
	for (int i = 0; i < g[x].size(); i++) {
		if (!viz[g[x][i]]) {
			dfs(g[x][i]);
			s.push(g[x][i]);
		}
	}
}

int main() {
	int x, y;
	freopen("sortaret.in","r",stdin);
	freopen("sortaret.out","w",stdout);
	
	scanf("%d %d", &n, &m);
	for (int i = 0; i < m; i++) {
		scanf("%d %d", &x, &y);
		g[x].push_back(y);
	}
	
	for (int i = 1; i <= n; i++) 
		if (!viz[i]) {
			dfs(i);
			s.push(i);
		}
		
	while (s.size()) {
		printf("%d ", s.top());
		s.pop();
	}
	
	return 0;
}