Cod sursa(job #3033330)

Utilizator 222cezarCezar Stilpeanu 222cezar Data 23 martie 2023 19:11:48
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>
#include <stack>

using namespace std;

#define FILE "sortaret"

ifstream in(FILE".in");
ofstream out(FILE".out");

#define N 50050
#define M 100100

struct el {
	int vf, urm;
};

el g[2 * M];
int lst[N];
int nr;

void adauga(int u, int v) {
	g[++nr].vf = v;
	g[nr].urm = lst[u];
	lst[u] = nr;
}

bool viz[N];
stack<int> stiva;

void dfs(int u) {
 	viz[u] = true;
 	for(int p = lst[u]; p != 0; p = g[p].urm) {
 	 	int v = g[p].vf;
 	 	if(!viz[v])
 	 		dfs(v);
 	}
 	stiva.push(u);
}

//parcurgere for(int p = lst[u]; p != 0; p = g[p].urm) { int v = g[p].vf; }                                                

int main() {                                                              
 	int n, m;
	in >> n >> m;
	
	for(int i = 1; i <= m; i++) {
	 	int u, v;
	 	in >> u >> v;
	 	adauga(u, v);
	}

	for(int i = 1; i <= n; i++)
		if(!viz[i])
			dfs(i);
	
	while(!stiva.empty()) {
	 	out << stiva.top() << ' ';
	 	stiva.pop();
	}
}