Cod sursa(job #1909497)

Utilizator lflorin29Florin Laiu lflorin29 Data 7 martie 2017 12:54:36
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

const int nMax = 50007;

int n, m;
vector<int>g[nMax];
bool vaz[nMax];
vector<int>ordine;

void Citire() {
	scanf("%d%d", &n, &m);

	for (int i = 1, from, to; i <= m; ++i) {
		scanf("%d%d", &from, &to);
		g[from].push_back(to);
	}
}

void dfs(int nod) {
	vaz[nod] = true;

	for (const auto& itr : g[nod])
		if (!vaz[itr])
			dfs(itr);

	ordine.push_back(nod);
}

void getOrder() {
	for (int i = 1; i <= n; ++i)
		if (!vaz[i])dfs(i);
}
void print(const vector<int>&that) {
	for (const auto& itr : that)
		printf("%d ", itr);

	printf("\n");
}
int main() {
	freopen("sortaret.in", "r", stdin);
	freopen("sortaret.out", "w", stdout);

	Citire();
	getOrder();
	reverse(begin(ordine), end(ordine));
	print(ordine);

	return 0;
}