#P5125. 「2018泉州夏令营提高组D4T2」证据

「2018泉州夏令营提高组D4T2」证据

Description

“凡人想以复杂的手法掩饰某件事时,往往因复杂而自掘坟墓,可是天才不会这样做。他们会选用极为单纯,但常人想象不到也绝不会选择的方法,将问题一口气复杂化。”

警察共发现了nn个证据,然而其中有一些是石神伪造的。

通过证据的两两组合,警察可以作出一些假设,每个假设有一定价值。

现在要求你选取其中的一部分假设,使得总价值最大。

选取假设的要求是:

将证据看成点

将假设看成带权的无向边

所有的点和选取的边构成kk个联通块

不允许出现环,避免作出的假设出现矛盾

我们称选取的假设有用,是指该假设所在的联通块中不包含伪造的证据。总价值等于所有选取的有用的假设的价值乘积。

求最大可能的总价值。

如果无法构成kk个联通块则输出1-1,如果能构成kk个联通块但没有有用的假设则输出11

Input Format

输入文件名为evidence.in。

第一行包含三个数nmn mkknn表示证据的数量,mm表示可以作出的假设数,kk表示最终的联通块的数量。

第二行包含nn个数factifact_i,由0011组成,如果factifact_i00则表示这个证据是伪造的,如果是11则表示这个证据是有价值的。

接下来m行每行包含三个数xiyix_i y_iziz_i,表示第ii条假设需要用到第xix_i和第yiy_i个证据,同时这个假设的价值是ziz_i

Output Format

输出文件名为evidence.out。

输出一行,包含一个整数,表示最大可能的总价值。

由于答案可能很大,所以对1000000007取模后输出。

Sample

样例输入一:

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

样例输出一:

6

样例输入二:

5 5 2
1 0 1 1 1
1 2 1
2 3 2
1 4 3
4 5 4
2 4 5

样例输出二:

12

Hint

对于30%的数据,m20m \le 20

对于50%的数据,不包含伪造的证据

对于100%的数据,n100000n \le 100000m200000m \le 200000,权值100 \le 100