QOJ.ac

QOJ

时间限制: 3.0 s 内存限制: 512 MB 总分: 100

#12704. 字典

统计

Petr 和 Dmitry 正在研究一种新型数据压缩方案。他们的任务是压缩一组给定的单词。为了压缩这组单词,他们必须构建一棵有根树。树的每条边都恰好标记有一个字母。

我们定义由这种树产生的“字典”为:可以通过连接树中任意顶点(不一定是根节点)到叶子节点(不一定在叶子节点结束)的路径上的边所对应的字母而构成的所有单词的集合。

他们需要构建这样一棵树,使得其字典包含给定的单词集合作为其超集。在所有满足上述条件的树中,这棵树的顶点数必须最少。任何具有相同最少顶点数的树均可。你的任务是帮助他们完成这项工作。

例如,在上图所示的树中,以 1 为根,从 7 到 5 的路径读作 “north”,从 16 到 12 的路径读作 “eastern”,从 29 到 2 的路径读作 “european”,从 3 到 25 的路径读作 “regional”,从 1 到 31 的路径读作 “contest”。

输入格式

输入文件的第一行包含给定集合中单词的数量 $n$ ($1 \le n \le 50$)。接下来的 $n$ 行包含不同的非空单词,每行一个单词,由小写英文字母组成。每个单词的长度最多为 10 个字符。

输出格式

第一行输出树中的顶点数 $m$。接下来的 $m$ 行包含树顶点的描述,每行一个描述。顶点按照其描述行出现的顺序从 1 到 $m$ 进行编号。如果对应的顶点是树根,则其描述行应包含一个整数 0;否则,其描述行应包含其父节点的索引以及连接到父节点的边上的字母,中间用空格隔开。

样例

输入 1

5
north
eastern
european
regional
contest

输出 1

31
0
7 n
2 o
18 t
4 h
29 e
17 a
7 s
8 t
9 e
10 r
11 n
6 u
13 r
14 o
15 p
16 e
3 r
18 e
19 g
20 i
21 o
22 n
23 a
24 l
1 c
26 o
27 n
28 t
6 s
30 t

说明

该样例输出对应于题目描述中的图片。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.