简单的拓扑排序,记录一下模板吧
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(int i=a;i<b;i++)
#define rep1(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
const int N=110;
int arr[N][N];
int vis[N];
int main()
{
ios::sync_with_stdio(false);
int n,m,x,y;
while(cin>>n>>m&&n)
{
memset(vis,0,sizeof vis);
memset(arr,0,sizeof arr);
rep(i,0,m)
{
cin>>x>>y;
arr[x][y]=1;
vis[y]++;
}
rep(i,0,n)
{
rep(j,1,n+1)
{
if(vis[j]==0)
{
rep(k,1,n+1)
{
if(arr[j][k]==1)
{
vis[k]--;
arr[j][k]=0;
}
}
if(i!=n-1)
cout<<j<<' ';
else
cout<<j<<endl;
vis[j]--; break;
}
}
}
}
return 0;
}