Pagini recente » Profil mister_ady | Istoria paginii utilizator/geralt_of_rivia | Istoria paginii utilizator/nimeni_altu | Cod sursa (job #265792) | Cod sursa (job #2715340)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
const int NMAX = 100005;
vector<int>G[NMAX];
vector< bool > viz;
vector< int > rasp;
int n, m;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
void DFS(int nod)
{
viz[nod] = true;
for (int fiu : G[nod])
if (!viz[fiu])
DFS(fiu);
rasp.push_back(nod);
}
void sortare_topologica()
{
viz.assign(n+5, false);
rasp.clear();
for (int i = 1; i <= n; ++i)
if (!viz[i])
DFS(i);
reverse(rasp.begin(), rasp.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 < rasp.size(); ++i)
fout << rasp[i] << " ";
return 0;
}