Cod sursa(job #2794319)

Utilizator schizofrenieShallan Davar schizofrenie Data 4 noiembrie 2021 17:40:30
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <vector>
#include <forward_list>

#define MAXN  50000
#define MAXM 100000

std::vector<int> muchii[MAXM];
std::forward_list<int> ret;

bool viz[MAXN];

void
dfs (int nod) {
	viz[nod] = true;
	for (int la: muchii[nod]) {
		if (!viz[la])
			dfs(la);
	}
	ret.emplace_front(nod + 1);
}


int main () {
	int n, m;
	int i;

	freopen("sortaret.in",  "r",  stdin);
	freopen("sortaret.out", "w", stdout);

	scanf("%d%d", &n, &m);

	for (i = 0; i != m; ++ i) {
		int de, la;
		scanf("%d%d", &de, &la);
		-- de, -- la;
		muchii[de].emplace_back(la);
	}


	for (i = 0; i != n; ++ i)
		if (!viz[i])
			dfs(i);

	for (int nod : ret)
		printf("%d ", nod);

	return 0;
}