Problem
企业“汽车2010”为世界著名汽车生产发动机。发动机正好由 n 个零件组成,编号从 1 到 n,而编号为 i 的零件在 pi 秒内完成。企业“Auto-2010”的具体情况是一次只能在那里制造一个发动机零件。有些部件需要预制的其他部件才能生产。
“Auto-2010”总导演为企业定下远大的任务——以最短的时间生产出第1号产品在展会上展示。
要求编写一个程序,在给定零件之间生产顺序的依赖性的情况下,将找到可能生产编号为 1 的零件的最短时间。
输入
输入文件的第一行包含数字 n (1≤ n ≤ 100000) —引擎零件的数量。第二行包含 n 个正整数 p
1、p
2、p
n,它们定义了每个零件的制造时间(以秒为单位)。制作每个零件的时间不超过 10
9 秒。
输入文件接下来的 n 行中的每一行都描述了零件生产的特征。这里第 i 行包含生产部件号 i 所需的部件数 ki,以及它们的编号。第 i 行没有重复的零件号。所有数 k
i 的总和不超过 200000。
众所周知,零件的生产不存在循环依赖。
印记
输出文件的第一行应包含两个数字:尽快生产零件号 1 所需的最短时间(以秒为单位)和为此需要生产的零件数 k。在第二行中,您需要打印 k 个以空格分隔的数字 —零件编号应按其生产顺序排列,以便尽快生产零件编号 1。
<正文>
输入 |
输出 |
3
100 200 300
1 2
0
2 2 1
| 300 2
2 1
|
2
23
1 2
0 |
5 2
2 1
|
4
2 3 4 5
2 3 2
1 3
0
2 1 3
| 9 3
3 2 1
|
表>