Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Diferente pentru onis-2016/solutii-runda-1 intre reviziile 19 si 20 | Cod sursa (job #2531391)
#include <bits/stdc++.h>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
const int NMAX = 5e4 + 5;
vector <int> G[NMAX], A;
int N, M, X, Y;
bool Sel[NMAX];
static inline void DFS (int Node)
{
Sel[Node] = 1;
for(auto it : G[Node])
if(!Sel[it])
DFS(it);
A.push_back(Node);
return;
}
int main()
{
f.tie(NULL);
f >> N >> M;
for(int i =1 ; i <= M; ++i)
{
f >> X >> Y;
G[X].push_back(Y);
}
for(int i = 1; i <= N; ++i)
if(!Sel[i])
DFS(i);
reverse(A.begin(), A.end());
for(auto it : A)
g << it << ' ';
g << '\n';
return 0;
}