Cod sursa(job #3332160)

Utilizator misterperdymatei alexandru antonie misterperdy Data 4 ianuarie 2026 18:02:07
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <stack>
#include <queue>

ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

using namespace std;

vector<vector<int>> vecini;
vector<bool> vizitat;

stack<int> stiva;

void DFS(int nod_curent) {
	vizitat[nod_curent] = true;

	for (auto v : vecini[nod_curent]) {
		if (!vizitat[v]) {
			DFS(v);
		}
	}

	//cand e gata il bagam in stiva
	stiva.push(nod_curent);
}

int main() {
	int n, m;
	fin >> n >> m;
	vecini.resize(n + 1);
	vizitat.resize(n + 1, false);
	for (int i = 1; i <= m; i++) {
		int x, y;
		fin >> x >> y;
		vecini[x].push_back(y);
	}

	for (int i = 1; i <= n; i++) {
		if (!vizitat[i]) {
			DFS(i);
		}
	}

	while (!stiva.empty()) {
		fout << stiva.top() << ' ';
		stiva.pop();
	}
}