Module: 拓扑排序


Problem

4 /5


*生产零件

Problem

企业“汽车2010”为世界著名汽车生产发动机。发动机正好由 n 个零件组成,编号从 1 到 n,而编号为 i 的零件在 pi 秒内完成。企业“Auto-2010”的具体情况是一次只能在那里制造一个发动机零件。有些部件需要预制的其他部件才能生产。

“Auto-2010”总导演为企业定下远大的任务——以最短的时间生产出第1号产品在展会上展示。

要求编写一个程序,在给定零件之间生产顺序的依赖性的情况下,将找到可能生产编号为 1 的零件的最短时间。

输入
输入文件的第一行包含数字 n (1≤ n ≤ 100000) —引擎零件的数量。第二行包含 n 个正整数 p1、p2、pn,它们定义了每个零件的制造时间(以秒为单位)。制作每个零件的时间不超过 109 秒。

输入文件接下来的 n 行中的每一行都描述了零件生产的特征。这里第 i 行包含生产部件号 i 所需的部件数 ki,以及它们的编号。第 i 行没有重复的零件号。所有数 ki 的总和不超过 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