Cod sursa(job #2576694)

Utilizator R3v1v3RAlexe Paul R3v1v3R Data 6 martie 2020 21:45:14
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <iostream>
#include <stack>
#include <vector>

using namespace std;

#ifndef _x

//comment to use ConsoleIO
#define ____FILE 1
#ifdef ____FILE
	ifstream fin("sortaret.in");
	ofstream fout("sortaret.out");
#else
	#define fin cin
	#define fout cout
#endif
//comment to use default 64-bit integers
#define ____LL 1 
#ifndef ____LL
	#define int int64_t
#endif

#endif
#define __MaxN 50005

stack<int>Stiva;
int Vizitat[__MaxN];
vector<int>Edges[__MaxN];
int n, m, x, y;

void DFS(int poz){
	for (int i = 0; i < Edges[poz].size(); ++i)
		if (Vizitat[Edges[poz][i]] == 0) {
			Vizitat[Edges[poz][i]] = 1;
			DFS(Edges[poz][i]);
		}
	Stiva.push(poz);
}

int32_t main(){
	fin >> n >> m;
	for (int i = 1; i <= m; ++i)
		fin >> x >> y, Edges[x].push_back(y);
	for (int i = 1; i <= n; ++i) {
		if(Vizitat[i]==0)
		DFS(i);
	}
	while (!Stiva.empty())
		fout << Stiva.top()<<' ',Stiva.pop();
}