bzoj#P2887. 旅行

旅行

题目描述

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

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

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

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

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

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

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

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

输入格式

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

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

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

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

输出格式

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

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

数据规模与约定

对于 100%100\% 的数据,1n,w1041\leq n,w\leq 10^41mn+51\leq m\leq n+51p2001\leq p\leq 2001qp21\leq q\leq p^2

输入数据保证:

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