老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