Pagini recente » Cod sursa (job #3158826) | Cod sursa (job #1577389) | Cod sursa (job #1400495) | Cod sursa (job #2363662) | Cod sursa (job #2731742)
// Varianta folosind DFS
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
#define Nmax 50001
vector<int> graph[Nmax];
bool visited[Nmax];
vector<int> top;
void dfs(int x) {
visited[x] = true;
// parcurg vecinii y ai lui x
for (int i = 0; i < graph[x].size(); i++) {
int y = graph[x][i];
if (!visited[y]) {
dfs(y);
}
}
top.push_back(x);
}
int main()
{
int N, M, x, y, i;
in >> N; // numarul de noduri
in >> M; // numarul de arce (muchii)
for (i = 0; i < M; i++) {
in >> x >> y;
// graf orientat
graph[x].push_back(y);
}
for (i = 1; i <= N; i++) {
if (!visited[i]) {
dfs(i);
}
}
for (i = top.size() - 1; i >= 0; i--) {
out << top[i] << " ";
}
out << '\n';
return 0;
}