Cod sursa(job #3316613)

Utilizator herbiHreban Antoniu George herbi Data 19 octombrie 2025 14:18:30
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
#include <stack>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
vector<set<int>> graf;
vector<bool> vizitat;
stack<int> st;
void dfs(int nod) {
	vizitat[nod] = true;
	for (auto vecin : graf[nod]) {
		if (!vizitat[vecin]) {
			dfs(vecin);
		}
	}
	st.push(nod);
}
int main() {
	int n, m;
	fin >> n >> m;
	graf.resize(n + 1);
	vizitat.resize(n + 1, 0);
	for (int i = 0; i < m; i++) {
		int x, y;
		fin >> x >> y;
		graf[x].insert(y);
	}
	for (int i = 1; i <= n; i++) {
		if (!vizitat[i]) {
			dfs(i);
		}
	}
	while (!st.empty()) {
		fout << st.top() << " ";
		st.pop();
	}
	fin.close();
	fout.close();
	return 0;
}