Topological Sort.
#include<iostream>
using namespace std;
int n;
int A[101][101];
int f[101];
int seq[101];
int main()
{
int i,j,k=0,flag=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
while(scanf("%d",&j)&&j)
{ A[i][0]++; A[i][A[i][0]]=j; f[j]++; }
}
while(flag)
{
flag=0;
for(i=1;i<=n;i++)
{
if(f[i]==0)
{
f[i]--;
seq[k++]=i;
for(j=1;j<=A[i][0];j++)
f[A[i][j]]--;
flag=1;
}
}
}
printf("%d",seq[0]);
for(i=1;i<k;i++)
printf(" %d",seq[i]);
printf("/n");
return 0;
}