Cod sursa(job #2000587)

Utilizator epermesterNagy Edward epermester Data 14 iulie 2017 10:54:32
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream> 
#include <vector>
#include <iterator>
using namespace std;

vector<int> list;

void sort(int nod, vector<int>* arce, bool* visited) {
	if (visited[nod]) return;
	visited[nod] = true;
	for (vector<int>::iterator it = arce[nod].begin();it != arce[nod].end();it++)
		sort(*it, arce, visited);
	list.push_back(nod);
}

int main() {
	ifstream in("sortaret.in");
	ofstream out("sortaret.out");
	int N, M;
	in >> N >> M;
	vector<int> *arce = new vector<int>[N];
	for (;M;--M) {
		int from, to;
		in >> from >> to;
		arce[from-1].push_back(to-1);
	}
	bool* visited = new bool[N];
	for (int i = 0;i < N;++i)
		visited[i] = false;
	for (int i = 0;i < N;++i)
		sort(i,arce,visited);
	while (!list.empty()) {
		out << list.back()+1 << " ";
		list.pop_back();
	}
}