#include <iostream> #include <queue> #include <vector> using namespace std; int main() { int n, m; cin >> n >> m; vector<vector<int>> graph(n + 1); // 邻接表(非矩阵) vector<int> indegress(n + 1, 0); // 记录结点入度 for (int i = 0; i < m; ++ i) { int x, y; cin >> x >> y; graph[x].push_back(y); ++indegress[y]; } vector<int> ans; queue<int> q; for (int i = 1; i <= n; ++i) { if (indegress[i] == 0) { q.push(i); ans.push_back(i); } } while (!q.empty()) { int cur = q.front(); q.pop(); for (auto next : graph[cur]) { // 将入度为 0 的结点放入队列 if (--indegress[next] == 0) { q.push(next); ans.push_back(next); } } } // 判断是否存在环 if (ans.size() == n) { for (int i = 0; i < n; ++i) { cout << ans[i]; if (i != n - 1) { cout << ' '; } } } else { cout << -1 << endl; } } // 64 位输出请用 printf("%lld")