Pagini recente » Cod sursa (job #1411676) | Cod sursa (job #404903) | Cod sursa (job #1770479) | Cod sursa (job #591608) | Cod sursa (job #1989141)
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
void visit(int node, std::vector<int> *arr, int *check, std::list<int> &out) {
if (check[node] == 1) {
//fail
}
if (check[node] == 2) {
return;
}
check[node] = 1;
for (auto it = arr[node].begin(); it != arr[node].end(); it++) {
visit(*it, arr, check, out);
}
check[node] = 2;
out.push_front(node);
}
int main() {
std::ifstream inFile("sortaret.in");
std::ofstream outFile("sortaret.out");
int nV, nM;
inFile >> nV >> nM;
std::vector<int> *arr = new std::vector<int>[nV + 1];
int *check = new int[nV + 1];
for (int i(0); i <= nV; i++) {
check[i] = 0;
}
int a, b;
for (int i(0); i < nM; i++) {
inFile >> a >> b;
arr[a].push_back(b);
}
std::list<int> out;
for (int i(1); i <= nV; i++) {
if (!check[i]) {
visit(i, arr, check, out);
}
}
while (!out.empty()) {
outFile << out.pop_front() << ' ';
}
inFile.close();
outFile.close();
delete[] arr;
delete[] check;
return 0;
}