Pagini recente » Cod sursa (job #1156730) | Cod sursa (job #1328217) | Cod sursa (job #16367) | Cod sursa (job #186003) | Cod sursa (job #1801039)
#include <bits/stdc++.h>
using namespace std;
#define eprintf(...) fprintf(stderr, __VA_ARGS__);
const int NMAX = 50005;
struct Node {
vector<int> adj;
bool visited;
};
Node V[NMAX];
int N, M;
stack<int> st;
void dfs(int k) {
V[k].visited = true;
for (int i = 0; i < (int) V[k].adj.size(); i++) {
if (!V[V[k].adj[i]].visited) dfs(V[k].adj[i]);
}
st.push(k);
}
int main() {
#ifndef DEBUG
freopen("sortaret.in", "r", stdin);
freopen("sortaret.out", "w", stdout);
#endif
scanf("%d %d", &N, &M);
for (int i = 0; i < N; i++) V[i].visited = false;
for (int i = 0; i < M; i++) {
int a, b;
scanf("%d %d", &a, &b);
a--; b--;
V[a].adj.push_back(b);
}
for (int i = 0; i < N; i++) {
if (!V[i].visited) {
dfs(i);
}
}
while (!st.empty()) {
printf("%d ", st.top() + 1);
st.pop();
}
printf("\n");
}