Cod sursa(job #2710215)

Utilizator teofilotopeniTeofil teofilotopeni Data 22 februarie 2021 10:32:43
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <vector>
using namespace std;

//  Sortare topologica

void parcurge(short index, vector<vector<short>> &nodes) {
    if (nodes[index].empty() || nodes[index].back() != -1) {
        for (; nodes[index].size(); nodes[index].pop_back())
            parcurge(nodes[index].back(), nodes);

        printf("%d ", index);
        nodes[index].push_back(-1);
    }
}

int main() {
	freopen("sortaret.in", "r", stdin);
	//freopen("sortaret.out", "w", stdout);
	int n, m, x, y;
	scanf("%d %d", &n, &m);
	vector<vector<short>> nodes(n + 1);
	while (m--) {
        scanf("%d %d", &x, &y);
        nodes[y].push_back(x);
	}
	for (x = 1; x <= n; x++)
        parcurge(x, nodes);
	return 0;
}