6596 - 搬运计划

通过次数

1

提交次数

1

时间限制 : 1 秒
内存限制 : 128 MB

Siruseri城中的道路都是单向的,不同的道路由路口连接。按照法律的规定,在每个路口都设立了一个Siruseri银行的ATM取款机。令人奇怪的是,Siruseri的咖啡屋也都设在路口,虽然并不是每个路口都设有咖啡屋。

Banditji计划实施Siruseri有史以来最惊天动地的ATM现金大搬运。他将从市中心出发,沿着单向道路行驶,搬运所有他途径的ATM机,最终他将在一个咖啡屋喝杯咖啡。

他从银行获知每个ATM机中可以搬运的现金数额。他希望你帮助他计算从市中心出发最后到达某个咖啡屋时最多能搬运的现金总数。他可以经过同一路口或道路任意多次,但只要他搬运过某个ATM机后,该ATM机里面就不会再有钱了。

例如,假设该城中有6个路口,道路的连接情况如图3-5-10所示:

15654244904228.png

市中心在路口1,由一个入口符号“→”来标识,那些有咖啡屋的路口用双圈表示,每个ATM机中可取的钱数标在了路口的上方。在这个例子中,Banditji能搬运的现金总数为47,实施的搬运路线是:1-2-4-1-2-3-5。

输入

第一行包含两个整数N,M,N表示路口的个数,M表示道路条数。

接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口编号。

接下来N行,每行一个整数,按顺序表示每个路口处的ATM机中的钱数。

接下来一行包含两个整数S、P,S表示市中心的编号,也就是出发的路口,P表示咖啡屋数目。

接下来的一行中有P个整数,表示P个咖啡屋的路口的编号。

输出

输出一个整数,表示Banditji从市中心开始到某个咖啡屋结束所能搬运的最多的现金总数。

样例

输入

6 7 
1 2
2 3
3 4
2 4
4 1
2 6
6 5
10
12
8
16
1
5
1 4
4 3 5 6

输出

47

提示

【数据规模】

对于50%的输入保证N,M≤3000。

对于100%的输入保证N,M≤500000。

每个ATM机中可取的钱数为一个非负整数且不超过4000。输入数据保证你可以从市中心沿着Siruseri的单向道路到达其中的至少一个酒吧。

来源

一本通提高