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; }