时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
wjyyy印了很多很多传单。
wjyyy的传单非常好看,所以她想要分给她的所有好友看,当然,只是给他们看而已。
wjyyy有n个朋友,不妨将他们从1到n编号。
每个人都可以把他手上的传单给一部分他认识的人。
但是很不幸的是,有些人认识的人并不会将传单传递给他。
当然,出于现实原因,当传单从某个人手里传递到另一个人手里时,会花上一些钱。
由于wjyyy非常喜欢传单,所以你要求出wjyyy最少用几张传单就可以让所有人都欣赏过她的传单。
同时,wjyyy是魔法少女,所以wjyyy的传单没有必要传递回wjyyy,最后wjyyy会使用魔法来收回她的传单。
不过wjyyy没有钱,所以你需要求出最少需要花多少钱。
输入描述:
第一行一个整数
, 表示wjyyy朋友的数量。
之后一行n个整数,第i个整数
表示wjyyy向i这个人传递传单需要的钱。
之后n行,第i+1行由一个整数

开始 之后的

个整数,每两个整数描述了一个关系,其中第一个整数

描述了可能的传递方向,也即,i可以向

传递传单,第二个整数则描述了传递时需要消耗的钱

。
同时保证

。
输出描述:
输出一行一个整数表示wjyyy在传单使用的数量最少的情况下花的最少的钱。
示例1
输入
复制
4
2 0 0 0
3 2 1 3 1 4 2
1 3 9
1 4 0
0
说明
样例如图:
在这个情况下 床单的传递路线为
。
容易计算出此时的最小费用为12。