P16068 [CSPro 32] 彩色路径

题目背景

洛谷的测试数据仅供民间交流使用,非官方测试数据。官方评测链接:。

题目描述

西西艾弗岛的路线图可以看作是一个具有 $N$ 个节点和 $M$ 条有向边的图。第 $i$ 个节点($0 \le i < N$)有一个颜色标签 $C[i] \in \{0, 1, \cdots, K - 1\}$,第 $j$ 条边($0 \le j < M$)从节点 $U[j]$ 指向节点 $V[j]$,长度为 $D[j]$。 对于游客顿顿来说,理想的观光路线应满足以下条件: - 是一条从节点 $0$ 到节点 $N - 1$ 的简单路径; - 是一条彩色路径,即路径上每个节点的颜色标签均不相同; - 并且包含的节点数小于或等于 $L$。 具体而言,理想的观光路线是一个节点序列,例如 $(t_0, t_1, \cdots, t_{q-1})$,满足以下所有要求: - 对于每个 $i$($0 \le i < q - 1$),存在一条从节点 $t_i$ 到节点 $t_{i+1}$ 的有向边。 - $t_0 = 0$ 且 $t_{q-1} = N - 1$ - 对于每对 $i, j$ ($0 \le i < j < q$),都有 $C[t_i] \ne C[t_j]$。 - $q \le L$ 一条路径的长度定义为边的总长度。你的任务是找到满足游客顿顿所有要求的**最长**观光路线。

输入格式

从标准输入读入数据。 输入共五行。 输入的第一行包含四个正整数 $N、M、L$ 和 $K$,分别表示图的节点数、边数、理想观光路线的节点数上限和颜色标签范围。 输入的第二行包含 $N$ 个整数 $C[0], C[1], \cdots, C[N - 1]$,表示图中每个节点的颜色标签。 接下来输入边的信息。 输入的第三行包含 $M$ 个整数 $U[0], U[1], \cdots, U[M - 1]$,表示每条有向边的起点; 输入的第四行包含 $M$ 个整数 $V[0], V[1], \cdots, V[M - 1]$,表示每条有向边的终点; 输入的第五行包含 $M$ 个整数 $D[0], D[1], \cdots, D[M - 1]$,表示每条有向边的长度。 输入数据保证不存在起点终点相同的边,如 $(u, u)$;每条有向边 $(u, v)$ 仅会出现一次,但不排除 $(u, v)$ 和 $(v, u)$ 可能同时存在。

输出格式

输出到标准输出。 输出一个数,表示理想观光路线的最大长度。

说明/提示

### 样例解释 以下是示例图,其中黑色和红色数字分别表示节点编号和边的长度。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/cvn31pki.png) ::: 如下表所示,在不超过四个节点的限制下,共有五条从节点 $0$ 到节点 $5$ 的**彩色路径**。其中最长的一条是 $(0, 1, 5)$,长度为 $9$。 | 彩色路径 | 节点数 | 长度 | |:------------:|:------:|:----:| | $(0, 1, 3, 5)$ | $4$ | $7$ | | $(0, 1, 4, 5)$ | ^ | $4$ | | $(0, 2, 4, 5)$ | ^ | $8$ | | $(0, 1, 5)$ | $3$ | $9$ | | $(0, 4, 5)$ | ^ | $5$ | ### 子任务 $20\%$ 的测试数据满足:对于每个 $i$($0 \le i < N - 1$),有 $C[i] \le C[i + 1]$,以及对于每个 $j$($0 \le j < M$),有 $U[j] < V[j]$。 另有 $30\%$ 测试数据满足:$K \le 15$。 全部的测试数据满足: - $2 \le N \le 100$ - $1 \le M \le 5000$ - $2 \le L \le 9 \le K \le 30$ - $C[0] = 0$ 且 $C[N - 1] = K - 1$ - 对于每个 $i$($1 \le i \le N - 2$): $$ \begin{aligned} &1 \le C[i] \le K - 2 \end{aligned} $$ - 对于每个 $j$($0 \le j < M$): $$ \begin{aligned} &0 \le U[j], V[j] < N \\ &C[U[j]] \ne C[V[j]] \\ &1 \le D[j] \le 10^6 \end{aligned} $$ - 至少存在一条从节点 $0$ 到节点 $N - 1$ 的彩色路径,节点数不超过 $L$。