题目名称 2907. [USACO Feb18] 目录遍历
输入输出 dirtraverse.in/out
难度等级 ★★
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 10
题目来源 GravatarWHZ0325 于2018-03-02加入
开放分组 全部用户
提交状态
分类标签
USACO 树形DP
分享题解
通过:8, 提交:22, 通过率:36.36%
GravatarWHZ0325 100 0.176 s 4.98 MiB C++
Gravatar胡嘉兴 100 0.176 s 5.65 MiB C++
Gravatar@@@ 100 0.420 s 7.18 MiB C++
GravatarCeres 100 0.457 s 16.77 MiB C++
GravatarCeres 100 0.460 s 16.54 MiB C++
GravatarCeres 100 0.469 s 16.30 MiB C++
GravatarCeres 100 0.494 s 14.35 MiB C++
GravatarCeres 100 0.637 s 16.65 MiB C++
Gravatar@@@ 90 0.432 s 7.18 MiB C++
GravatarCeres 90 0.655 s 15.42 MiB C++
关于 目录遍历 的近10条评论(全部评论)

2907. [USACO Feb18] 目录遍历

★★   输入文件:dirtraverse.in   输出文件:dirtraverse.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

奶牛 Bessie 令人惊讶地精通计算机。她在牛棚的电脑里用一组文件夹储存了她所有珍贵的文件,比如:

bessie/

    folder1/

        file1

    folder2/

        file2

    folder3/

        file3

    file4

只有一个“顶层”的文件夹,叫做 bessie。

Bessie 可以浏览任何一个她想要访问的文件夹。从一个给定的文件夹,每一个文件都可以通过一个“相对路径”被引用。在一个相对路径中,符号“..”指的是上级目录。如果 Bessie 在 folder2 中,她可以按下列路径引用这四个文件:

../file1

file2

../../folder3/file3

../../file4

Bessie 想要选择一个文件夹,使得从该文件夹出发,对所有文件的相对路径的长度之和最小。

【输入格式】

第一行包含一个整数 $N$($2≤N≤100,000$),为所有文件和文件夹的总数量。为了便于输入,每个对象(文件或文件夹)被赋予一个唯一的 $1$ 至 $N$ 之间的 ID,其中 ID 1 指的是顶层文件夹。第i行编号为i.接下来有 $N$ 行。每行的第一项是一个文件或是文件夹的名称。名称仅包含小写字母 a-z 和数字 0-9,长度至多为 $16$ 个字符。名称之后是一个整数 $m$。如果 $m$ 为0,则该对象是一个文件。如果 $m>0$,则该对象是一个文件夹,并且该文件夹下共有 $m$ 个文件或文件夹。在 $m$ 之后有 $m$ 个整数,为该文件夹下的对象的 ID。

【输出格式】

输出所有文件的相对路径的长度之和的最小值。注意这个值可能超过 $32$ 位整数的表示范围。

【样例输入】

8
bessie 3 2 6 8
folder1 2 3 4
file1 0
folder2 1 5
file2 0
folder3 1 7
file3 0
file4 0

【样例输出】

42

【提示】

这个输入样例描述了上面给出的样例目录结构。

最优解是选择 folder1。从这个文件夹出发,相对路径分别为:

file1

folder2/file2

../folder3/file3

../file4

【来源】

USACO 2018 February Gold Directory Traversal

供题:Mark Gordon