#P14618. [2019 KAIST RUN Fall] Lexicographically Minimum Walk

[2019 KAIST RUN Fall] Lexicographically Minimum Walk

Description

有一个包含 NN 个节点和 MM 条边的有向图 GG。每个节点编号为 11NN,每条边编号为 11MM。对于每个 ii1iM1 \le i \le M),边 ii 从顶点 uiu_i 指向顶点 viv_i,并且具有 唯一 的颜色 cic_i

一条 路径 定义为边的序列 e1,e2,,ele_1, e_2, \cdots, e_{l},其中对于每个 1k<l1 \le k < lvekv_{e_k}(边 eke_k 的终点)与 uek+1u_{e_{k+1}}(边 ek+1e_{k+1} 的起点)相同。我们可以说路径 e1,e2,,ele_1, e_2, \cdots, e_l 从顶点 ue1u_{e_1} 开始,到顶点 velv_{e_l} 结束。注意同一条边可以在一条路径中出现多次。

路径 e1,e2,,ele_1, e_2, \cdots, e_l颜色序列 定义为 ce1,ce2,,celc_{e_1}, c_{e_2}, \cdots, c_{e_l}

考虑图 GG 中从顶点 SS 到顶点 TT 的所有长度不超过 1010010^{100} 的路径的颜色序列。请编写一个程序,找出这些序列中字典序最小的序列。

Input Format

输入的第一行包含四个以空格分隔的整数 NNMMSSTT1N100,0001 \le N \le 100,0000M300,0000 \le M \le 300,0001SN1 \le S \le N1TN1 \le T \le NSTS \neq T)。

接下来是 MM 行:第 jj1jM1 \le j \le M)行包含三个以空格分隔的整数 uiu_iviv_icic_i1ui,viN1 \le u_i, v_i \le Nuiviu_i \neq v_i1ci1091 \le c_i \le 10^{9});它描述了一条从顶点 uiu_i 指向顶点 viv_i 且颜色为 cic_i 的有向边。

图中没有重边,且每条边有唯一的颜色。形式化地说,对于任意 1i<jM1 \le i < j \le Mcicjc_i \neq c_j(ui,vi)(uj,vj)(u_i, v_i) \neq (u_j, v_j) 成立。

Output Format

如果不存在从顶点 SS 到顶点 TT 的路径,输出 IMPOSSIBLE(不带引号)。

否则,设 a1,a2,,ala_1, a_2, \cdots, a_l 是从顶点 SS 到顶点 TT 的所有长度不超过 1010010^{100} 的路径的颜色序列中字典序最小的序列。

  • 如果 l106l \le 10^{6},在第一行输出 a1,a2,,ala_1, a_2, \cdots, a_l。每个输出的整数之间应有空格。
  • 如果 l>106l > 10^{6},输出 TOO LONG(不带引号)。
3 3 1 3
1 2 1
2 3 7
1 3 5
1 7
3 4 1 3
1 2 1
2 1 2
2 3 7
1 3 5
TOO LONG
2 0 2 1
IMPOSSIBLE

Hint

序列 p1,p2,,pnp_1, p_2, \cdots, p_{n} 在字典序上小于另一个序列 q1,q2,,qmq_1, q_2, \cdots, q_{m},当且仅当以下条件之一成立:

  • 存在唯一的 jj0j<min(n,m)0 \le j < \min(n, m))使得 p1=q1p_1 = q_1p2=q2p_2 = q_2\cdotspj=qjp_{j} = q_{j}pj+1<qj+1p_{j+1} < q_{j+1}
  • n<mn < mp1=q1p_1 = q_1p2=q2p_2 = q_2\cdotspn=qnp_n = q_n。换句话说,ppqq 的严格前缀。

翻译由 DeepSeek V3 完成