Mai intai trebuie sa te autentifici.
Cod sursa(job #1895087)
Utilizator | Data | 27 februarie 2017 19:37:00 | |
---|---|---|---|
Problema | Sortare topologica | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.73 kb |
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
const int NM = 50010;
stack <int> S;
vector <int> G[NM];
int N, E, edge, from, to, node;
bool visited[NM];
void Visit(int node) {
visited[node] = 1;
for (auto &it: G[node]) {
if (!visited[it]) {
Visit(it);
}
}
S.push(node);
}
int main()
{
in >> N >> E;
for (edge = 1; edge <= E; ++edge) {
in >> from >> to;
G[from].push_back(to);
}
for (node = 1; node <= N; ++node) {
if (!visited[node]) {
Visit(node);
}
}
while (!S.empty()) {
out << S.top() << ' ';
S.pop();
}
return 0;
}