logo AlgoBeat OnlineJudge
登录 注册

#102887. [BZOJ 2887] 旅行

内存限制:128 MiB 时间限制:10000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: 匿名

题目描述

为了奖励习得最短路算法的自己,和安慰在与你的比赛中成功爆零的自己,小 Y 决定去旅行。

根据导游的解释,旅行的地图是一个无向连通图,可以看作两部分:大地图和小地图。在大地图中,共有 个点, 条边,其中宾馆在点 ,小 Y 固定从宾馆开始旅行,并在旅行后回到宾馆。

对于大地图中的每条边的两个端点 ,对应着某个小地图中的两个点 。经过大地图中的边 的过程可以这么描述,从大地图中的 点到达小地图中的 点,通过小地图再到 点,然后回到 点。也就是说,大地图中的一条边是一个小地图。

坑爹的是,由于造路的人偷工减料,导致所有的小地图都是相同的,且大地图中的每一个点,都对应着小地图中的同一个点(可能出现大地图中不同点对应小地图中同一个点的情况)。

不过,优美的是,在小地图中,你总能找到一个点,使得从这个点开始,能毫不遗漏又毫不重复地走完所有的边。

通过上述描述,就构成了一个全局图(图套图?)。在全局图中,两条边被认为是相同的情况只有:两条边是大地图的同一条边对应的小地图中的同一条边。

小 Y 表示他对大地图、小地图什么的表示毫无兴趣。他只想好好地旅行。但是,经过相同的道路会让他感到很无趣。所以,每当他经过一条乐趣值为 的边时,总乐趣值加上 ,并且这条边的乐趣值会变为

但是小 Y 不知道怎么样走才能使自己最快乐,即总乐趣值最高。所以他想请你帮他算一下,最高的总乐趣值。

输入格式

第一行四个正整数 分别表示大地图中的点数和边数,小地图中的点数和边数。

接下来一行 个整数,第 个整数表示大地图中编号为 的点对应在小地图中的点的编号。

接下来 行,每行两个整数 。表示大地图中有一条编号为 的点到编号为 的点的边。

接下来 行,每行三个整数 。表示小地图中有一条编号为 的点到编号为 的点的边,且初始乐趣值为

输出格式

一行一个整数表示最大的总乐趣值。

样例

样例输入 #1

4 3 3 3
1 2 1 1
1 2
2 3
2 4
1 2 1
2 3 1
1 3 1

样例输出 #1

9

数据范围与提示

对于 的数据,

输入数据保证:

  1. 大地图和小地图中无自环;
  2. 大地图中点的编号为 ,小地图中点的编号为
  3. 对于大地图中的任意一条边 ,都有点 在小地图中对应着不同的点。