Pagini recente » Cod sursa (job #810140) | Cod sursa (job #97777) | Monitorul de evaluare | Profil RoxiGeorgiana | Cod sursa (job #1339096)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in ("sortaret.in");
ofstream out ("sortaret.out");
const int MAXN = 50001;
int Ans;
vector <int> Graf[MAXN];
bool Viz[MAXN];
int Sol[MAXN];
void DFS (const int &nod)
{
Viz[nod] = 1;
vector <int> :: iterator it;
for (it = Graf[nod].begin (); it != Graf[nod].end (); ++ it)
if (!Viz[*it])
DFS (*it);
Sol[++ Ans] = nod;
}
int main()
{
int N, M, i, a, b;
in >> N >> M;
for (i = 1; i <= M; i ++){
in >> a >> b;
Graf[a].push_back (b);
}
for (i = 1; i <= N; i ++)
if (!Viz[i])
DFS (i);
for (i = N; i; i --)
out << Sol[i] << " ";
return 0;
}