Cod sursa(job #2529478)

Utilizator copanelTudor Roman copanel Data 23 ianuarie 2020 16:11:25
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>
#include <vector>
#include <stack>

std::vector<int> arce[50000];
bool vizitat[50000];
std::stack<int> stiva;

void dfs(int nod) {
	vizitat[nod] = true;
	for (const auto& succ : arce[nod]) {
		if (!vizitat[succ]) {
			dfs(succ);
		}
	}
	stiva.push(nod);
}

int main() {
	std::ifstream fin("sortaret.in");
	std::ofstream fout("sortaret.out");
	int n, m;

	fin >> n >> m;
	for (int i = 0; i < m; i++) {
		int x, y;

		fin >> x >> y;
		x--; y--;
		arce[x].push_back(y);
	}

	for (int i = 0; i < n; i++) {
		if (!vizitat[i]) {
			dfs(i);
		}
	}

	while (!stiva.empty()) {
		fout << stiva.top() + 1 << ' ';
		stiva.pop();
	}
	return 0;
}