标签:
4 3 1 2 2 3 4 3
1 2 4 3
#include<stdio.h> #include<string.h> int degree[1000]; int side[1000]; int map[510][501],list,line; void TO() { int i,j=0,k,t; for(i=1;i<=line;i++) { for(t=1;t<=line;t++) if(degree[t]==0)//找没有前驱的点 { k=t; break; } side[j++]=k;//记录该点 degree[k]=-1;//把该点去掉 for(int v=1;v<=line;v++) if(map[k][v]) degree[v]--;//前驱与后面的连线消失 } printf("%d",side[0]); for(i=1;i<j;i++) printf(" %d",side[i]); printf("\n"); } int main() { while(scanf("%d%d",&line,&list)!=EOF) { int j,a,b; memset(map,0,sizeof(map)); memset(degree,0,sizeof(degree)); for(j=0;j<list;j++) { scanf("%d%d",&a,&b); if(map[a][b]==0)//防止出现重复如1,2;1,2这样的情况 { map[a][b]=1;// 与前一步的关系; degree[b]++;//前驱的数量 } } TO(); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/l15738519366/article/details/47658527