The system of Martians' blood relations is confusing enough. Actually, Martians bud when they want and where they want. They gather together in different groups, so that a Martian can have one parent as well as ten. Nobody will be surprised by a hundred of children. Martians have got used to this and their style of life seems to them natural.
And in the Planetary Council the confusing genealogical system leads to some embarrassment. There meet the worthiest of Martians, and therefore in order to offend nobody in all of the discussions it is used first to give the floor to the old Martians, than to the younger ones and only than to the most young childless assessors. However, the maintenance of this order really is not a trivial task. Not always Martian knows all of his parents (and there's nothing to tell about his grandparents!). But if by a mistake first speak a grandson and only than his young appearing great-grandfather, this is a real scandal.#include //拓扑排序
#include
#include
using namespace std;
int main()
{
int i,n,in[105],mapp[105][105],print[105],m,w,s=0,k;
while(~scanf("%d",&n))
{
int i,j,book[105];
memset(mapp,0,sizeof(mapp));
memset(in,0,sizeof(in));
memset(book,0,sizeof(book));
for(i=1; i<=n; i++)
{
scanf("%d",&m);
if(m==0)
continue;
while(m!=0)
{
if(mapp[i][m]==0) //m是i的后代
{
mapp[i][m]=1; //防止重复
in[m]++; //入度
}
scanf("%d",&m);
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
if(book[j]==0&&in[j]==0) //找没有入度的,即祖先
{
book[j]=1;
w=j;
break;
}
}
print[s++]=w; //存到数组里
for(k=1; k<=n; k++)
{
if(mapp[w][k]==1) //和w有关系的边
{
mapp[w][k]=0; //这个边标记为0,减掉这条边
in[k]--; //出度
}
}
}
for(i=0; i