T791979 【P1104】 - 树的表示
题目描述
给定一棵有根树的信息,请你编写个程序输出这棵树的各个节点的信息:
- 当前节点的编号
- 当前节点的种类(root, internal node,leaf,分别代表:根、内部节点、叶子节点)
- 当前节点的父节点编号
- 当前节点的子节点列表
- 当前节点的深度(根节点的深度为0)
根节点(root)是没有父节点的那个节点,只有1个根节点
叶子节点(leaf)是没有子节点的那些节点
内部节点(internal node)是除了根节点和叶子节点外的其他节点
这里,给定的树由 n 个节点组成,每个节点都有一个从 0 到 n-1 的唯一ID编号(或者是值域)。
下图 显示了一个有根树的示例,其中每个节点的 ID 由圆圈中的数字(节点)表示。该示例对应于第一个样例输入。

输入格式
输入的第一行包含一个整数 n,表示树的节点数。
接下来的 n 行中,每行提供一个节点 u 的信息,格式如下:
`id k c1 c2 ... ck`
其中 id 是节点 u 的 ID,k 是 u 的度,c1 ... ck 是 u 的第 1 到第 k 个子节点的 ID。如果节点没有子节点,则 k 为 0。
输出格式
按 ID 顺序(从小到大的顺序)以下面的格式打印每个节点的信息:
`node id: parent = p, depth = d, type, [c1...ck]`
p 是其父节点的 ID。如果节点没有父节点,打印 -1。
d 是节点的深度,根节点的深度为0
type 是表示节点类型的字符串(根节点 root、内部节点 internal node或叶节点 leaf)。如果只有1个节点,则视为根节点,打印 root。
c1...ck 是按顺序排列的子节点列表。
请遵循下面的示例输出格式。
说明/提示
100%的数据:$1 \le n \le 100000$