View Code
1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 using namespace std;
5 int map[ 105][ 105];
6 int degree[ 105],visit[ 105];
7 int main()
8 {
9 int i,j,n,x,y,k;
10 while(scanf( " %d ",&n)!=EOF)
11 {
12 memset(degree, 0, sizeof(degree));
13 memset(map, 0, sizeof(map));
14 memset(visit, 0, sizeof(visit));
15 for(i= 1;i<=n;i++)
16 {
17 scanf( " %d ",&x);
18 while(x!= 0)
19 {
20 map[i][x]= 1;
21 degree[x]++;
22 scanf( " %d ",&x);
23 }
24 }
25 for(i= 1;i<=n;i++)
26 if(degree[i]== 0&&!visit[i]){
27 visit[i]= 1;
28 printf( " %d ",i);
29 break;
30 }
31 for(j= 1;j<=n;j++)
32 if(map[i][j])degree[j]--;
33 k= 1;
34 while(k<n)
35 {
36 for(i= 1;i<=n;i++)
37 if(degree[i]== 0&&!visit[i]){
38 visit[i]= 1;
39 printf( " %d ",i);
40 k++;
41 break;
42 }
43 for(j= 1;j<=n;j++)
44 if(map[i][j])degree[j]--;
45 }
46 printf( " \n ");
47 }
48 return 0;
49 }
2 #include <cstdio>
3 #include <cstring>
4 using namespace std;
5 int map[ 105][ 105];
6 int degree[ 105],visit[ 105];
7 int main()
8 {
9 int i,j,n,x,y,k;
10 while(scanf( " %d ",&n)!=EOF)
11 {
12 memset(degree, 0, sizeof(degree));
13 memset(map, 0, sizeof(map));
14 memset(visit, 0, sizeof(visit));
15 for(i= 1;i<=n;i++)
16 {
17 scanf( " %d ",&x);
18 while(x!= 0)
19 {
20 map[i][x]= 1;
21 degree[x]++;
22 scanf( " %d ",&x);
23 }
24 }
25 for(i= 1;i<=n;i++)
26 if(degree[i]== 0&&!visit[i]){
27 visit[i]= 1;
28 printf( " %d ",i);
29 break;
30 }
31 for(j= 1;j<=n;j++)
32 if(map[i][j])degree[j]--;
33 k= 1;
34 while(k<n)
35 {
36 for(i= 1;i<=n;i++)
37 if(degree[i]== 0&&!visit[i]){
38 visit[i]= 1;
39 printf( " %d ",i);
40 k++;
41 break;
42 }
43 for(j= 1;j<=n;j++)
44 if(map[i][j])degree[j]--;
45 }
46 printf( " \n ");
47 }
48 return 0;
49 }