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 }

 

posted @ 2012-08-09 10:08  M_cag  阅读(130)  评论(0编辑  收藏  举报