Cod sursa(job #3136797)

Utilizator Uriesu_IuliusUriesu Iulius Uriesu_Iulius Data 8 iunie 2023 17:20:23
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
#include <stack>

using namespace std;

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

const int mxN = 5e4 + 5;
int n, m;
bool vis[mxN];
vector<int> adj[mxN];
stack<int> stk;

void readInput() {
	fin >> n >> m;
	for (int i = 0; i < m; i++) {
		int u, v;
		fin >> u >> v;
		adj[u].push_back(v);
	}
}

void dfs(int u) {
	vis[u] = 1;
	for (auto v : adj[u]) {
		if (!vis[v]) {
			dfs(v);
		}
	}
	stk.push(u);
}

int main() {

	readInput();
	for (int i = 1; i <= n; i++) {
		if (!vis[i]) {
			dfs(i);
		}
	}
	while (!stk.empty()) {
		fout << stk.top() << " ";
		stk.pop();
	}
	return 0;
}