#include<iostream>
#include<cstring>
using namespace std;
const int maxn = 512;
int map[maxn][maxn], dgr[maxn];//indegree 入度,map 网,地图
int m, n;
void toposort() {//拓扑排序
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++) {
if (dgr[j] == 0) {//若入度为0,继续
dgr[j] = -1;//删除
cout << j;//输出
if (i == n) cout << endl;
else cout << " ";//格式控制
for (int k = 1; k <= n; k++)//更新
if (map[j][k] == 1)
dgr[k]--;
break;
}
}
}
int main() {
//freopen("data.in","r",stdin);
while (cin >> n >> m) {
for (int i = 0; i<m; i++) {
int a, b;
cin >> a >> b;//a优先于b
if (map[a][b] == 0) {//避免重复统计
map[a][b] = 1;
dgr[b]++;
}
}
toposort();
}
return 0;
}
\