#icpc2013summerday4i. [icpc2013summer_day4_i]Multi Path Story

[icpc2013summer_day4_i]Multi Path Story

问题陈述

你是一个喜欢漂亮女孩游戏(约会模拟游戏的子类型)的程序员。一款名为“可漂浮的心”的游戏上周五发布,现在刚到了你家。这个游戏有多个故事情节。当你完成所有这些故事情节时,你可以获得主要女主角Megumi的特别角色。所以,你想要赶快玩这个游戏!但是,让我们冷静一下,先考虑如何在最短的时间内完成所有的故事情节。

事实上,你具有一种特殊的技能,可以知道游戏分支点的结构。通过使用这种技能,你发现这个游戏中有nn个分支点,第ii个分支点有kik_{i}个选择。这个游戏非常复杂,可能有多条路径达到第ii个分支点。你还注意到,如果你选择第ii个分支点的第jj个选择,从第ii个分支点进展到另一个分支点(或一个结局)需要cijc_{ij}分钟。当然,你需要在所有分支点上选择所有的选择,并阅读一个分支点和另一个分支点(或一个结局)之间的故事,以完成所有的故事情节。此外,你可以假设返回游戏开始的时间("重置")和从头开始播放到第一个分支点只需要很少的时间。

游戏的说明书说,这个游戏有一个名为"快速保存"的额外功能,这个功能允许你记录当前正在玩的地方,并在以后的任何时间返回。但是,由于某种错误,这个功能无法工作。因此,如果你在中途达到一个结局或退出游戏,你每次都必须从第一个分支点重新开始。至今还没有发布任何修复此错误的补丁。这是最快玩家所面临的强制性困难。

好吧,让我们估计一下完成所有故事情节所需的最短时间。


输入

数据集以以下格式给出。

nn k1k_{1} t11t_{11} c12c_{12} ... t1k1t_{1k_{1}} c1k1c_{1k_{1}} : : knk_{n} tn1t_{n1} cn2c_{n2} ... tnknt_{nk_{n}} cnknc_{nk_{n}}

数据集的第一行包含一个整数nn2n1,0002 \leq n \leq 1{,}000),表示游戏中的分支点数量。接下来的nn行描述了分支点。第i{i}行描述了ID号为ii的分支点。第一个整数kik_{i}0ki500 \leq k_{i} \leq 50)是第ii个分支点的选择数量。当ki0k_{i} ≥0时,意味着第ii个分支点是一个结局。接下来的2ki2k_{i}个整数tijt_{ij}1tijn1 \leq t_{ij} \leq n)和cijc_{ij}0cij3000 \leq c_{i}j \leq 300)是选择的信息。tijt_{ij}表示在选择第jj个选择时下一个分支点的ID号。cijc_{ij}表示第ii个分支点和tijt_{ij}号分支点之间阅读故事的时间。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

来源

Summer Camp 2013