9538: 小塔的梦境迷宫

内存限制:256 MB 时间限制:6 S
题面:传统 评测方式:文本比较 上传者:
提交:1 通过:1

题目描述

众所周知,小塔是一个爱做梦的孩子。这一天她梦见自己被巫师关进了一个迷宫之中,这个迷宫有nn个房间,通过mm单向道路连接,迷宫的起点是1号房间,终点是nn 号房间。每条道路都有一个守路人,需要支付对应数量的金币才能通过,巫师告诉了小塔迷宫的起点和终点是哪个房间,并告诉小塔这个迷宫还存在着两个神秘的规则:

1.只有当走到终点时经过的路的数量是3的倍数时她才能顺利逃离迷宫。

2.每个房间都有一个类别属性,她可以花费xx个金币在相同类别的属性之间瞬移(注意每次瞬移也算作走过了一条路)特殊地她可以在同个房间内进行瞬移

由于小塔在梦中时智商受到了极大的限制,所以她来求助你帮她算算走出迷宫最少需要花多少金币?(如果怎样都不能走出迷宫的话输出“-1”(不包含引号)即可)

输入格式

第一行有一个整数,T(1≤T≤30)T(1T30),代表数据组数

每组数据第一行有三个整数,n,m,xn,m,x,(2≤n≤105,2≤m≤106,1≤x≤1072n105,2m106,1x107)代表有nn个房间,mm条单向道路以及在同一类别的房间瞬移需要花费xx个金币。

第二行有 nn 个整数 A1,A2,A3,⋯AnA1,A2,A3,An , (1≤Ai≤n1Ain)代表每个房间的种类。

接下来有mm行,每行有三个整数ui,vi,diui,vi,di ( 1≤ui,vi≤n,ui≠vi,1≤di≤1071ui,vin,ui=vi,1di107) ,代表一条从uiuivivi的单项道路,需要花费didi点金币就能通过。保证不存在重边和自环。

数据保证∑n≤3⋅105,∑m≤106n3105,m106

输出格式

对于每组数据输出一行一个整数代表最少需要支付的金币数量(如果无法逃离请输出“-1”(不包含引号)

输入样例 复制

1
6 8 5
1 2 1 2 1 3
1 3 2
2 1 4
3 2 3
3 5 6
3 4 8
4 6 3
5 6 7
5 4 6

输出样例 复制

13