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

    ID: 16343 远端评测题 2000ms 1024MiB 尝试: 0 已通过: 0 显示难度普及+/提高− 上传者: 标签>图论贪心2019高校校赛

[2019 KAIST RUN Fall] Lexicographically Minimum Walk

题目描述

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

一条 路径 定义为边的序列 e1,e2,⋯ ,ele_1, e_2, \cdots, e_{l},其中对于每个 1≤k<l1 \le k < l,vekv_{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} 的路径的颜色序列。请编写一个程序,找出这些序列中字典序最小的序列。

输入格式

输入的第一行包含四个以空格分隔的整数 NN、MM、SS 和 TT(1≤N≤100,0001 \le N \le 100,000,0≤M≤300,0000 \le M \le 300,000,1≤S≤N1 \le S \le N,1≤T≤N1 \le T \le N,S≠TS \neq T)。

接下来是 MM 行:第 jj(1≤j≤M1 \le j \le M)行包含三个以空格分隔的整数 uiu_i、viv_i 和 cic_i(1≤ui,vi≤N1 \le u_i, v_i \le N,ui≠viu_i \neq v_i,1≤ci≤1091 \le c_i \le 10^{9});它描述了一条从顶点 uiu_i 指向顶点 viv_i 且颜色为 cic_i 的有向边。

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

输出格式

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

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

  • 如果 l≤106l \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

提示

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

  • 存在唯一的 jj(0≤j<min⁡(n,m)0 \le j < \min(n, m))使得 p1=q1p_1 = q_1,p2=q2p_2 = q_2,⋯\cdots,pj=qjp_{j} = q_{j} 且 pj+1<qj+1p_{j+1} < q_{j+1}。
  • n<mn < m 且 p1=q1p_1 = q_1,p2=q2p_2 = q_2,⋯\cdots,pn=qnp_n = q_n。换句话说,pp 是 qq 的严格前缀。

翻译由 DeepSeek V3 完成