B. 工作安排

内存限制:128 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较

题目描述

老K的工厂里有很多工作要完成,每一项工作都需要一定的时间来完成它。当然,有些工作必须在另一些工作完成的情况下才能进行。我们把这些工作称为完成本项工作的准备工作。至少有一项工作不要求有准备工作,这个可以最早着手完成的工作,标记为工作1。 老K有一个工作清单,包含需要完成的n个工作,并且这份清单是有一定顺序,工作k (k>1) 的准备工作只可能在工作 1 至 k−1 中。
写一个程序依次读入每个工作的说明。计算出所有工作都被完成的最短时间。当然互相没有关系的工作可以同时进行,你可以假定工厂里有足够多的工人来同时完成任意多个工作。

输入格式

第1行:一个整数n (3≤n≤10,000),必须完成的工作数目;
第 2 至 n+1 行,每行有一些用空格隔开的整数,分别表示:
工作序号(保证在输入文件中是从 1 到 n 有序递增的);
完成工作所需要的时间 t (1≤t≤100);
一些必须完成的准备工作,总数不超过 100 个,由一个数字 0 结束。有些工作没有需要准备的工作只描述一个单独的 0。
保证整个输入文件中不会出现多余的空格。

输出格式

一个整数,表示完成所有工作所需的最短时间。

样例

【样例输入】
7
1 5 0
2 2 1 0
3 3 2 0
4 6 1 0
5 1 2 4 0
6 8 2 4 0
7 4 3 5 6 0

【样例输出】
23