#1042. 地铁

地铁

Subway (subway, 2s, 512M)

Byteland 有 nn 个城市和 n!n! 辆私家车。由于交通不便,市民们怨声载道。今天,市长宣布 Byteland 多了 kk 条高速地铁。每条高速地铁由若干段组成,每段连接两个城市里的对应地铁的地铁站,且只由每条高速地铁就可以从每个城市到达其他所有城市。

每个城市都有所有高速地铁对应的 kk 个地铁站。根据设计不同,在每个城市进和出每个地铁站需要一定的时间,且进站需要付对应高速地铁的一张票。一旦进站了,在出站之前你可以任意使用该高速地铁对应的段进行穿梭。由于 Byteland 科技先进,你并不需要等待地铁,所以乘坐每段需要的时间是已知的。由于每条高速地铁由不同的公司承建,要从地铁 xx 到地铁 yy,你需要出站(走出地铁 xx 的地铁站)再进站(走进同一城市中地铁 yy 的地铁站)。

你现在处于城市 11。使用一些手段,你获得了 kk 种高速地铁的票各一张,你希望使用高速地铁到达城市 nn。注意你开始并不在任何地铁站中,且你不能在地铁站内结束旅途(即你需要在城市 nn 出站后结束)。你想知道所需的最短时间。

输入格式

第一行两个正整数 n,kn,k,表示城市数和高速地铁数。

对于每个高速地铁 t[1,k]t\in [1,k],首先输入两行。第一行 nn 个非负整数 at,ia_{t,i} 表示城市 ii 进地铁 tt 对应站所需时间,第二行 nn 个非负整数 bt,ib_{t,i} 表示城市 ii 出地铁 tt 对应站所需时间。接下来一行一个正整数 mtm_t,表示该地铁的段数。对于每一段输入一行三个非负整数 u,v,wu,v,w,表示该段连接的两个地铁站所在城市 u,vu,vuvu\ne v)和乘坐该段所需时间 ww

保证仅使用每个高速地铁都能从任意一个城市到达其他所有城市,且每个高速地铁在每两个城市之间最多只有一个段。

输出格式

输出一个非负整数,表示从城市 11 到城市 nn 所需的最短时间。

样例输入1

4 2
1 2 1 4
4 3 2 1
4
2 1 2
2 3 39
4 2 48
3 4 1
1 1 2 2
1 0 0 1
3
1 4 29
2 3 3
4 3 7

样例输出1

18

一种最优策略是 11 号线从城市 11 坐到城市 22,用时 11(城市 11 进站)+2+2(乘坐城市 11 到城市 22 的那段地铁)+3+3(城市 22 出站),再用 22 号线从城市 22 坐到城市 44,用时 11(城市 22 进站)+3+3(乘坐城市 22 到城市 33 的那段地铁)+7+7(乘坐城市 33 到城市 44 的那段地铁)+1+1(城市 44 出站),总用时 1818

样例输入2

2 2
0 0
0 0
1
2 1 1
0 0
0 0
1
1 2 2

样例输出2

1

不一定要用完所有的票。

样例输入3、样例输出3

见选手文件夹下 ex_subway3.inex_subway3.ans

样例输入4、样例输出4

见选手文件夹下 ex_subway4.inex_subway4.ans。记得爆int。

数据范围

对于所有数据,2n5002\le n\le 500n1mt1000n-1\le m_t\le 10001k81\le k\le 80at,i,bt,i,w1090\le a_{t,i},b_{t,i},w\le 10^9

对于 20% 的数据,n5n\le 5k2k\le 2

对于 30% 的数据,n100n\le 100k3k\le 3

对于 50% 的数据,n100n\le 100k5k\le 5

对于 70% 的数据,k6k\le 6

对于另外 10% 的数据,k=1k=1