/* ID: espr1t TASK: KEYWORDS: */ #include #include #include #include using namespace std; FILE *in; FILE *out; const int MAX = 1400; int n, m; int deg[MAX]; vector v[MAX]; int main(void) { in = stdin; out = stdout; in = fopen("lottery.in", "rt"); out = fopen("lottery.out", "wt"); fscanf(in, "%d", &m); for (int i = 0; i < m; i++) { int from, to; fscanf(in, "%d %d", &from, &to); n = max(n, max(from, to)); from--; to--; v[from].push_back(to); deg[to]++; } queue q; for (int i = 0; i < n; i++) if (deg[i] == 0) q.push(i); vector ans; while (!q.empty()) { int node = q.front(); q.pop(); ans.push_back(node); for (int i = 0; i < (int)v[node].size(); i++) { if (--deg[v[node][i]] == 0) { q.push(v[node][i]); } } } for (int i = 0; i < (int)ans.size(); i++) fprintf(out, "%d%c", ans[i] + 1, i + 1 == (int)ans.size() ? '\n' : ' '); return 0; }