上代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#include<algorithm>
#define rep(i,n) for (int i=1;i<=n;i++)
using namespace std;
int indrg[600];
vector<int> map[600],ans;
int mp[505][505];
int n,m;
int main(){
while (scanf("%d%d",&n,&m)!=EOF){
ans.clear();
memset(mp,0,sizeof mp);
memset(indrg,0,sizeof indrg);
rep(i,n) map[i].clear();
rep(i,m){
int u,v;
scanf("%d%d",&u,&v);
if (!mp[u][v]){
map[u].push_back(v);
indrg[v]++;
mp[u][v]=1;
}
}
rep(i,n) rep(j,n){
if (indrg[j]==0){
ans.push_back(j);
rep(k,map[j].size())
indrg[map[j][k-1]]--;
indrg[j]=-1;
break;
}
}
rep(i,ans.size()-1)
printf("%d ",ans[i-1]);
printf("%d\n",ans[ans.size()-1]);
}
return 0;
}