#P2367. Genealogical tree
Genealogical tree
题目描述
火星人的血缘关系系统相当复杂。实际上,火星人想在什么时候、什么地点繁衍后代都行。他们聚集成不同的群体,所以一个火星人可能有一个父母,也可能有十个。要是一个火星人有上百个孩子,也没人会感到惊讶。火星人已经习惯了这种情况,在他们看来,这种生活方式很自然。
而在行星议会中,复杂的族谱系统引发了一些尴尬。最德高望重的火星人会在议会相聚,因此,为了在所有讨论中都不得罪任何人,发言顺序是先让年长的火星人发言,接着是较年轻的,最后才是最年轻且没有孩子的议员。然而,维持这个顺序并非易事。火星人并不总是清楚自己所有的父母(更别提他们的祖父母了!)。但要是不小心让孙子先发言,然后才轮到看起来很年轻的曾祖父发言,那可就真的是一场丑闻了。
你的任务是编写一个程序,一劳永逸地确定一个发言顺序,确保议会的每一个成员都比他的后代先发言。
输入
标准输入的第一行仅有一个数字N,1 <= N <= 100 —— 火星行星议会成员的数量。按照古老的传统,议会成员用从1到N的自然数进行编号。接下来有N行,第I行包含第I个成员的子女列表。子女列表是由子女编号组成的序列,编号之间用空格隔开,顺序任意。子女列表可能为空,列表(即使为空)以0结尾。
输出
标准输出应在唯一的一行中包含发言者编号的序列,编号之间用空格隔开。如果有多个序列满足问题的条件,你只需向标准输出写入其中任意一个。至少存在一个这样的序列。
样例输入
5
0
4 5 1 0
1 0
5 3 0
3 0
2 4 5 3 1
来源
乌拉尔国立大学 2000 年 10 月内部竞赛,初级组