hdu 1285
1 //最基础的top排序 2 #include<stdio.h> 3 #include<string.h> 4 #include<algorithm> 5 using namespace std; 6 #define xx 505 7 int g[xx][xx],indegree[xx]; 8 int n,m; 9 void topsort() 10 { 11 int i,j,k; 12 for(i=1;i<=n;i++) 13 { 14 for(j=1;j<=n;j++) 15 { 16 if(indegree[j]==0) 17 { 18 indegree[j]--; 19 if(i!=n) 20 printf("%d ",j); 21 else 22 printf("%d\n",j); 23 for(k=1;k<=n;k++) 24 { 25 if(g[j][k]) 26 indegree[k]--; 27 } 28 break; 29 } 30 } 31 } 32 } 33 int main() 34 { 35 int i,a,b; 36 while(scanf("%d%d",&n,&m)!=EOF) 37 { 38 memset(g,0,sizeof(g)); 39 memset(indegree,0,sizeof(indegree)); 40 for(i=1;i<=m;i++) 41 { 42 scanf("%d%d",&a,&b); 43 if(!g[a][b]) 44 { 45 g[a][b]=1; 46 indegree[b]++; 47 } 48 } 49 topsort(); 50 } 51 return 0; 52 }