在公司的工作安排中,不同的工作可能是互相独立的,也可能是有依赖的。一个任务A是另外一个任务B的前置任务,要A完成后才能进行B,特别地,每个任务可能最多有2个前置任务,而前置任务本身可能也有前置任务。
这样的前置依赖结构可以用树表示,子节点是父节点的前置任务
当有一系列任务分配下来后,由于项目规划的需要,问当最后一个任务(根节点)完成,最少需要多少时间
第一行两个正整数m, n,分别代表总共有树上有m个节点,和树上有n条边,用空格分割下面有m个行,表示每个节点任务的id和所需要的时间,用空格分割下面有n行,每行为3个部分,表示树上的边,用空格分割,第一个数字为某非叶子节点(父节点)的id, 第二个为该边为left还是right,第三个为子节点的id注意:id彼此不会重复,id 1为根节点,2<=m<=1000, 1<=n<=1000,任务时间每个不会大于1000
一个整数,表示最后一个任务(根节点)完成,最少需要多少时间
10 9 1 10 2 20 3 25 4 239 5 41 6 50 7 61 8 72 9 35 10 41 1 left 2 1 right 3 2 left 4 2 right 5 3 left 6 6 left 7 6 right 8 7 left 9 7 right 10
269
如上图所示,最后总的最优时间为10+20+239=269