拓扑排序,刚刚讲的就用到了/。。。。
直接套模板就行~~~~
#include<stdio.h>
#include<string.h>
int map[150][150];
int in[150];
int visit[150];
int main()
{int m,n,a,b,i,j,leap;while(scanf("%d%d",&n,&m)&&(n||m)){memset(map,0,sizeof(map));memset(in,0,sizeof(in));memset(visit,0,sizeof(visit));for(i=0;i<m;i++){scanf("%d%d",&a,&b);if(map[a][b]==0){in[b]++;}map[a][b]=1;}leap=n;while(leap--){for(i=1;i<=n;i++){if(visit[i]==0&&in[i]==0){visit[i]=1;break;}}printf("%d",i);if(leap)printf(" ");elseprintf("\n");for(j=1;j<=n;j++){if(map[i][j]==1){in[j]--;}}}}return 0;
}