在某大型企业的内部资料库中,所有文件被分门别类地存放在若干层文件夹中。整个资料库有一个根目录(root),从该目录包含若干子文件夹与文件。每个文件夹下又可以继续包含文件或其他文件夹,从而形成一棵树形的层级结构。
例如:
root/
folder1/
file1
folder2/
file2
folder3/
file3
file4
该文件结构表示:
root 下有 folder1、folder3 两个文件夹,以及一个 file4 文件。folder1 文件夹中有一个 file1 文件,以及 folder2 文件夹,folder2 文件夹中有一个 file2 文件。folder3 文件夹中有一个 file3 文件。当你位于某个文件夹中时,你可以通过相对路径,来访问到任何你想要访问的文件。
从一个文件夹到某个文件的相对路径是:从当前文件夹出发,使用 ../ 表示返回上一级文件夹,用 / 连接子文件夹,直到到达目标文件。
相对路径长度指的是:路径中所有字符的总数(包括斜杠 / 与点号 .)。
比如,假设你位于 root 文件夹:
file1,相对路径为:folder1/file1,相对路径长度为 13。file2,相对路径为:folder1/folder2/file2,相对路径长度为 21。file3,相对路径为:folder3/file3,相对路径长度为 13。file4,相对路径为:file4,相对路径长度为 5。再比如,假设你位于 folder1 文件夹:
file1,相对路径为:file1,相对路径长度为 5。file2,相对路径为:folder2/file2,相对路径长度为 13。file3,相对路径为:../folder3/file3(注意这里需要先从 folder1 文件夹中通过 ../ 返回 root,才能访问到 folder3),相对路径长度为 16。file4,相对路径为:../file4,相对路径长度为 8。企业希望设置一个默认打开位置(即选择一个文件夹作为入口),使得从这个文件夹出发,访问所有文件所需的相对路径长度总和最小。
第一行输入一个整数 N,表示所有文件和文件夹的总数。
接下来 N 行描述各个文件或文件夹的信息。
每一行的格式为:
name m id1 id2 ... idm
其中:
name 表示文件或文件夹的名称,仅由小写字母和数字组成。id1, id2, ..., idm)。文件/文件夹的编号从 1 到 N,其中 1 号一定是根目录(即 root)。
输出一个整数,表示最小的相对路径长度总和。
8 root 3 2 6 8 folder1 2 3 4 file1 0 folder2 1 5 file2 0 folder3 1 7 file3 0 file4 0
42
12 root 5 2 6 8 9 12 folder1 2 3 4 file1 0 folder2 2 5 11 file2 0 folder3 2 7 10 file3 0 file4 0 file5 0 file6 0 file7 0 file8 0
87
20 root 7 2 6 8 9 12 16 19 folder1 3 3 4 13 file1 0 folder2 3 5 11 18 file2 0 folder3 4 7 10 15 20 file3 0 file4 0 file5 0 file6 0 file7 0 file8 0 folder4 2 14 17 file9 0 file10 0 file11 0 file12 0 file13 0 file14 0 file15 0
180
该样例对应的目录结构即题目描述中的结构:
root/
folder1/
file1
folder2/
file2
folder3/
file3
file4
将默认打开位置设在 folder1 中,可以使得所有文件访问所需的相对路径长度总和最小。
所有文件访问相对路径长度总和为:5+13+16+8=42。(具体相对路径,请参考题目描述)
对于 10\% 的数据,满足 N \leq 10。
对于 20\% 的数据,满足 N \leq 200。
对于 30\% 的数据,满足 N \leq 3500。
对于 100\% 的数据,满足 2 \le N \leq 10^5,0 \le m \lt N,文件/文件夹的名称长度不超过 16 个字符。