4 3 1 2 2 3 4 3
1 2 4 3
#include<stdio.h> #include<string.h> const int N =505; int mapt[N][N],n,in[N]; void tope() { int k=n; while(k--) { int i; for( i= 1;i<=n;i++) if(in[i]==0) break; printf("%d",i); if(k) printf(" "); for(int j=1;j<=n;j++) in[j]-=mapt[i][j]; in[i]=-1; } printf("\n"); } int main() { int m; while(scanf("%d%d",&n,&m)>0) { memset(mapt,0,sizeof(mapt)); memset(in,0,sizeof(in)); while(m--) { int a,b; scanf("%d%d",&a,&b); mapt[a][b]++; in[b]++; } tope(); } }
原文地址:http://blog.csdn.net/u010372095/article/details/45174637