#P13856. [CERC 2023] Labelled Paths

    ID: 13836 远端评测题 15000ms 512MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>2023Special Judge哈希 hashing后缀数组 SAICPCCERC

[CERC 2023] Labelled Paths

Description

给定一个有向无环图,其中有 nn 个顶点和 mm 条边。每条边都有一个标记(由小写字母组成的字符串;可能为空字符串)。我们将“路径的标记”定义为这条路径上各边标记按路径顺序拼接而成的字符串。若从起点顶点 ss 到目标顶点 tt 存在多条路径,则其中最小的路径指的是其标记在所有路径的标记中按字典序最小的那条。请你编写一个程序,对于给定的起点 ss,输出从 ss 到每个顶点 tt 的最小路径。

Input Format

第一行包含四个整数,分别是 nn(顶点数)、mm(边数)、dd(字符串 AA 的长度,见下文)、ss(起点的编号)。顶点编号为 11nn

第二行给出一个字符串 AA,长度正好为 dd,所有字符均为小写英文字母。图中所有边的标记都是字符串 AA 的子串。

接下来 mm 行描述各条边。第 ii 行描述第 ii 条边,包含四个整数:uiu_i(该边的起点)、viv_i(该边的终点)、pip_ii\ell_i。其中最后两个数表示该边的标记是字符串 AA 的一个子串:它从 AA 的第 pip_i 个字符开始,长度为 i\ell_i。这里我们认为 AA 的字符编号从 11dd

Output Format

输出 nn 行,第 tt 行(t=1,,nt = 1, \dots, n)描述从 sstt 的最小路径。

  • 如果从 sstt 不存在路径,则这一行只输出整数 00
  • 否则,先输出路径上的顶点数(包含 sstt),随后输出该路径上所有顶点的编号,按路径顺序排列,彼此间以空格分隔。

如果存在多条合法解,输出任意一条均可。

5 7 6 3
abcbca
3 2 1 1
2 1 5 1
2 5 4 2
3 1 1 2
3 4 3 2
1 4 6 1
5 4 5 2
2 3 1
2 3 2
1 3
3 3 1 4
3 3 2 5

Hint

注释

在这个样例中,边 313 \rightarrow 1 的标记是 "ab";边 141 \rightarrow 4 的标记是 "a";因此从 3344 的最小路径是 3143 \rightarrow 1 \rightarrow 4,其标记为 "aba"。

输入限制

  • 1sn6001 \leq s \leq n \leq 600
  • 1m20001 \leq m \leq 2000
  • 1d1061 \leq d \leq 10^6
  • 1uin1 \leq u_i \leq n1vin1 \leq v_i \leq n,且 uiviu_i \neq v_i(对所有 i=1,,mi = 1, \dots, m 成立)
  • 1pi1 \leq p_i0i0 \leq \ell_i,并且 pi+i1dp_i + \ell_i - 1 \leq d(对所有 i=1,,mi = 1, \dots, m 成立)
  • 图是无环的,且不存在平行边(即若 iji \neq j,则有 uiuju_i \neq u_jvivjv_i \neq v_j)。

翻译由 ChatGPT-5 完成