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 }