#icpc2013summerday4i. [icpc2013summer_day4_i]Multi Path Story
[icpc2013summer_day4_i]Multi Path Story
问题陈述
你是一个喜欢漂亮女孩游戏(约会模拟游戏的子类型)的程序员。一款名为“可漂浮的心”的游戏上周五发布,现在刚到了你家。这个游戏有多个故事情节。当你完成所有这些故事情节时,你可以获得主要女主角Megumi的特别角色。所以,你想要赶快玩这个游戏!但是,让我们冷静一下,先考虑如何在最短的时间内完成所有的故事情节。
事实上,你具有一种特殊的技能,可以知道游戏分支点的结构。通过使用这种技能,你发现这个游戏中有个分支点,第个分支点有个选择。这个游戏非常复杂,可能有多条路径达到第个分支点。你还注意到,如果你选择第个分支点的第个选择,从第个分支点进展到另一个分支点(或一个结局)需要分钟。当然,你需要在所有分支点上选择所有的选择,并阅读一个分支点和另一个分支点(或一个结局)之间的故事,以完成所有的故事情节。此外,你可以假设返回游戏开始的时间("重置")和从头开始播放到第一个分支点只需要很少的时间。
游戏的说明书说,这个游戏有一个名为"快速保存"的额外功能,这个功能允许你记录当前正在玩的地方,并在以后的任何时间返回。但是,由于某种错误,这个功能无法工作。因此,如果你在中途达到一个结局或退出游戏,你每次都必须从第一个分支点重新开始。至今还没有发布任何修复此错误的补丁。这是最快玩家所面临的强制性困难。
好吧,让我们估计一下完成所有故事情节所需的最短时间。
输入
数据集以以下格式给出。
... : : ...
数据集的第一行包含一个整数(),表示游戏中的分支点数量。接下来的行描述了分支点。第行描述了ID号为的分支点。第一个整数()是第个分支点的选择数量。当时,意味着第个分支点是一个结局。接下来的个整数()和()是选择的信息。表示在选择第个选择时下一个分支点的ID号。表示第个分支点和号分支点之间阅读故事的时间。ID为1的分支点是第一个分支点。你可以假设所有的分支点和结局都可以从第一个分支点到达。你还可以假设游戏中没有循环,也就是说,没有分支点可以在没有重置的情况下多次到达。
输出
在一行中打印最短时间。
样例输入1
2
1 2 2
0
样例输入1对应的输出
2
样例输入2
6
2 2 1 3 2
2 4 3 5 4
2 5 5 6 6
0
0
0
样例输入2对应的输出
24
样例输入3
6
3 2 100 3 10 3 10
1 4 100
1 4 10
3 5 1 5 1 6 1
0
0
样例输入3对应的输出
243