题目描述
农夫约翰的N头牛(1<=N<=10000)被方便地编号为1..N。每头牛挤奶需要T(i)单位的时间。不幸的是,由于FJ谷仓的布局,一些奶牛必须先挤奶。如果奶牛A必须在奶牛B之前挤奶,那么FJ需要在开始挤奶B之前完全完成挤奶A。
为了尽快给他的奶牛挤奶,FJ雇佣了大量的农场工人来帮助完成这项任务——足够在同一时间给任意数量的奶牛挤奶。然而,尽管奶牛可以同时挤奶,但由于某些奶牛必须先于其他奶牛挤奶的限制,整个过程的速度是有限的。请帮助FJ计算挤奶过程必须花费的最小总时间。
输入格式:
第1行:两个空格分隔的整数:N(奶牛数量)和M(挤奶限制数量);1<=M<=50000)。
第2..1+N行:第i+1行包含T(i)(1<=T(i)<=100000)的值。
第2+N..1+N+M行:每行包含两个空格分隔的整数A和B,表示奶牛A必须完全挤奶才能开始挤奶奶牛B。这些约束永远不会形成循环,因此解决方案总是可能的。
输出格式:
第1行:挤奶所有奶牛所需的最短时间。
输入样例#1:
3 1
10
5
6
3 2
输出样例#1:
11