Pagini recente » Cod sursa (job #2353650) | Cod sursa (job #2523229) | Cod sursa (job #2255855) | Cod sursa (job #2684669) | Cod sursa (job #2852754)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int n; // number of vertices
int m; // number of relations
vector<int> adj[50004]; // adjacency list of graph
vector<bool> visited;
vector<int> ans;
void dfs(int v)
{
visited[v] = true;
for (int u : adj[v])
{
if (!visited[u])
dfs(u);
}
ans.push_back(v);
}
void topological_sort()
{
visited.assign(n + 1, false);
ans.clear();
for (int i = 1; i <= n; ++i)
{
if (!visited[i])
dfs(i);
}
reverse(ans.begin(), ans.end());
}
int main()
{
fin >> n >> m;
for (int i = 1; i <= m; i++)
{
int v, u;
fin >> v >> u;
adj[v].push_back(u);
}
topological_sort();
for (int i = 0; i < n; i++)
{
fout << ans[i] << ' ';
}
return 0;
}