Pagini recente » Cod sursa (job #3295771) | Cod sursa (job #3212196) | Cod sursa (job #3295766)
#include <algorithm>
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
ifstream fin ("sortaret.in");
ofstream fout ("sortaret.out");
void dfs(int node, vector<int> &topo, vector<bool> & viz, vector<vector<int>> &adj)
{
if (viz[node])
return;
viz[node] = true;
for (int neigh : adj[node]) {
if (!viz[neigh]) {
dfs(neigh, topo, viz, adj);
}
}
topo.push_back(node);
}
int main()
{
int N, M;
fin >> N >> M;
vector<vector<int>> adj(N + 1, vector<int>());
for (int i = 0; i < M; ++i) {
int x, y;
fin >> x >> y;
adj[x].push_back(y);
}
vector<int> topo;
vector<bool> viz(N + 1, false);
for (int i = 1; i <= N; ++i) {
if (!viz[i])
dfs(i, topo, viz, adj);
}
reverse(topo.begin(), topo.end());
for (int i = 0; i < N; ++i)
fout << topo[i] << ' ';
return 0;
}