就就就一道拓扑排序【捂脸】..
被多组测试数据坑死【捂脸】..
感觉多组测试数据就是来坑人的
#include <cstdio>
#include <cstring>
#define N 550
int map[N][N],cnt[N],n,m,ans[N];
bool flag[N];
int main(){
while(scanf("%d%d",&n,&m)>0){
memset(cnt,0,sizeof(cnt));
memset(flag,true,sizeof(flag));
memset(map,0,sizeof(map));
for(int i=1;i<=m;i++){
int x,y;scanf("%d%d",&x,&y);
if(!map[x][y])cnt[y]++,map[x][y]=1;
}int num=0;
while(num!=n){
for(int i=1;i<=n;i++){
if(!cnt[i] && flag[i]){
ans[++num]=i;flag[i]=false;
for(int j=1;j<=n;j++) if(map[i][j]) cnt[j]--;
break;
}
}
}printf("%d",ans[1]);for(int i=2;i<=num;i++) printf(" %d",ans[i]);printf("\n");
}
return 0;
}