Cod sursa(job #2529435)

Utilizator copanelTudor Roman copanel Data 23 ianuarie 2020 15:17:43
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <vector>
#include <queue>

std::vector<int> arce[50000];
int predecesori[50000];

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);
		predecesori[y]++;
	}

	std::queue<int> coada;
	for (int i = 0; i < n; i++) {
		if (predecesori[i] == 0) {
			coada.push(i);
		}
	}
	while (!coada.empty()) {
		fout << coada.front() + 1 << ' ';
		for (const auto& succ : arce[coada.front()]) {
			predecesori[succ]--;
			if (predecesori[succ] == 0) {
				coada.push(succ);
			}
		}
		coada.pop();
	}
	return 0;
}