#include<cstdio> #include<queue> #include<cstring> using namespace std; //拓补排序入门水题 int G[105][105]; int in[105]; int ans[105]; queue<int>q; void toposort(int n) { int tmp,cnt = 0; for(int i = 1;i<=n;++i) if(!in[i]) q.push(i); while(!q.empty()){ tmp = q.front(); q.pop(); ans[++cnt] = tmp; for(int i = 1;i<=n;++i) { if(G[tmp][i]){ in[i]--; if(!in[i]) q.push(i); } } } } int main() { int n,m; while(~scanf("%d",&n)){ memset(in,0,sizeof(in)); memset(G,0,sizeof(G)); for(int i = 1;i<=n;++i) { while(scanf("%d",&m),m){ G[i][m] = 1; in[m]++; } } toposort(n); for(int i = 1;i<=n;++i) printf("%d ",ans[i]); printf("\n"); } return 0; }