Pagini recente » Cod sursa (job #2407558) | Cod sursa (job #2715034) | Cod sursa (job #2357343) | Cod sursa (job #1527285) | Cod sursa (job #2718074)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
const int NMAX = 100005;
int n, m;
vector<int>G[NMAX];
vector<int>sol;
bool viz[NMAX];
void dfs(int u)
{
viz[u] = 1;
for (int v : G[u])
if (!viz[v])
dfs(v);
sol.push_back(u);
}
void sortare_topologica()
{
for (int i = 1; i <= n; i++)
if (!viz[i])
dfs(i);
reverse(sol.begin(), sol.end());
}
void read()
{
fin >> n >> m;
while (m--)
{
int a, b;
fin >> a >> b;
G[a].push_back(b);
}
}
int main()
{
ios_base::sync_with_stdio(false);
fin.tie(0); fout.tie(0);
read();
sortare_topologica();
for (int i = 0; i < sol.size(); i++)
fout << sol[i] << ' ';
fout << '\n';
return 0;
}