// 1.找到一个入度为0的点并输出 // 2.删除该点及其发出去的所有边 // 3.重复以上步骤 #include <iostream> #include <cstdio> #include <cstring> #define M 510 using namespace std; int map[M][M], in[M]; int n,m; int main() { // freopen("in","r",stdin); // freopen("out","w",stdout); int i,r,j,a,b; while(scanf("%d%d",&n,&m)!=EOF) { memset(map,0,sizeof(map)); memset(in,0,sizeof(in)); for(i=0; i<m; i++) { scanf("%d%d",&a,&b); if(map[a][b]==0) { map[a][b]=1; in[b]++; } } for(i=0;i<n;i++) { for(r=1;r<=n;r++) if( !in[r] ) break; if(i!=n-1) printf("%d ",r); in[r]=-1; for(j=1;j<=n;j++) if( map[r][j] ){ map[r][j]=0; in[j]--; } } printf("%d\n",r); } return 0; }