Cod sursa(job #1999851)

Utilizator epermesterNagy Edward epermester Data 12 iulie 2017 11:59:02
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream> 
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;

vector<int> lista;

void sort(int csucs, vector<int>* utak, bool* notVisited) {
	if (!notVisited[csucs]) return;cout << csucs;
	notVisited[csucs] = false;
	for (vector<int>::iterator it = utak[csucs].begin();it != utak[csucs].end();it++)
		sort(*it, utak, notVisited);
	lista.push_back(csucs);
}

int main() {
	ifstream in("sortaret.in");
	ofstream out("sortaret.out");
	int N, M;
	in >> N >> M;
	vector<int> *utak = new vector<int>[N];
	for (;M;--M) {
		int honnan, hova;
		in >> honnan >> hova;
		utak[honnan-1].push_back(hova-1);
	}
	bool* notVisited = new bool[N];
	for (int i = 0;i < N;++i)
		sort(i,utak,notVisited);
	while (!lista.empty()) {
		out << lista.back()+1 << " ";
		lista.pop_back();
	}
}