发传单
时间限制: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行由一个整数x_i开始 之后的个整数,每两个整数描述了一个关系,其中第一个整数描述了可能的传递方向,也即,i可以向传递传单,第二个整数则描述了传递时需要消耗的钱
同时保证

输出描述:

输出一行一个整数表示wjyyy在传单使用的数量最少的情况下花的最少的钱。
示例1

输入

复制
4
2 0 0 0
3 2 1 3 1 4 2
1 3 9
1 4 0
0

输出

复制
12

说明

样例如图:
在这个情况下 床单的传递路线为 wjyyy\to1\to2\to3\to4
容易计算出此时的最小费用为12。