源代码: #include<cstdio> int m,n,h[1001]={0}; bool f[1001][1001]={0}; const int maxint=1061109567; int main() { scanf("%d%d",&n,&m); for (int a=1;a<=m;a++) { int x,y; scanf("%d%d",&x,&y); if (!f[x][y]) { f[x][y]=true; h[y]++; } } for (int a=1;a<=n;a++) { int k(1); while ((h[k]!=0)&&(k<n)) k++; for (int b=1;b<=n;b++) if (f[k][b]) h[b]--; h[k]=maxint; printf("%d ",k); } //每次循环处理一个节点。 return 0; }