Pagini recente » Cod sursa (job #281873) | Cod sursa (job #381586) | Cod sursa (job #2403075) | Cod sursa (job #2139829) | Cod sursa (job #1540325)
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#define REP(i, n) for (int i=0; i<int(n); ++i)
#define FOR(i, n) for (int i=1; i<=int(n); ++i)
using namespace std;
typedef vector<int> vi;
const int Nmax = 50333;
vi G[Nmax];
int vis[Nmax], ret[Nmax];
void dfs(int vertex) {
if (vis[vertex])
return;
for(auto nbr: G[vertex]) {
dfs(nbr);
}
vis[vertex] = 1;
ret[++ret[0]] = vertex;
}
int main() {
ifstream fin ("sortaret.in");
ofstream fout ("sortaret.out");
int N, M, a, b;
fin >> N >> M;
while(M--) {
fin >> a >> b;
G[a].push_back(b);
}
FOR(i, N) {
dfs(i);
}
for (int i = ret[0]; i > 0; i--) {
fout << ret[i] << (i == 1 ? '\n' : ' ');
}
return 0;
}