T791979 【P1104】 - 树的表示

题目描述

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

输入格式

输入的第一行包含一个整数 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$