Pagini recente » Cod sursa (job #2338878) | Cod sursa (job #586334) | Cod sursa (job #119510) | Cod sursa (job #1144515) | Cod sursa (job #3166480)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
const int NMAX = 50001;
vector<int> G[NMAX];
bool visited[NMAX];
int incr;
int topological_order[NMAX];
void dfs(int node) {
visited[node] = true;
for(int i = 0; i < (int)G[node].size(); i++) {
int nextNode = G[node][i];
if (!visited[nextNode])
dfs(nextNode);
}
topological_order[incr++] = node;
}
int main()
{
int n, m, x, y, root;
fin >> n >> m;
for(int i = 0; i < m; i++) {
fin >> x >> y;
G[x].push_back(y);
}
for(int i = 1; i <= n; i++)
if (!visited[i])
dfs(i);
for(incr--; incr >= 0; incr--)
fout << topological_order[incr] << " ";
return 0;
}