Pagini recente » Cod sursa (job #575277) | Cod sursa (job #1966164) | Cod sursa (job #216269) | Cod sursa (job #2203473) | Cod sursa (job #3261970)
#include <fstream>
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream cin("sortaret.in");
ofstream cout("sortaret.out");
void dfs(int node, vector<vector<int>> &adj, vector<bool> &visited, stack<int> &topOrder)
{
visited[node] = true;
for (int neighbor : adj[node])
{
if (!visited[neighbor])
{
dfs(neighbor, adj, visited, topOrder);
}
}
topOrder.push(node);
}
void topologicalSort(vector<vector<int>> &adj, int n)
{
vector<bool> visited(n, false);
stack<int> topOrder;
for (int i = 0; i < n; i++)
{
if (!visited[i])
{
dfs(i, adj, visited, topOrder);
}
}
while (!topOrder.empty())
{
cout << (topOrder.top() + 1) << " ";
topOrder.pop();
}
cout << endl;
}
int main()
{
int n, m;
cin >> n >> m;
vector<vector<int>> adj(n);
for (int i = 0; i < m; i++)
{
int u, v;
cin >> u >> v;
adj[u - 1].push_back(v - 1);
}
topologicalSort(adj, n);
return 0;
}