#LQ1460. 魔法阵

魔法阵

问题描述

魔法师小蓝为了营救自己的朋友小 QQ,来到了敌人布置的魔法阵。魔法阵可以看作是一幅具有 NN 个结点 MM 条边的无向图,结点编号为 0,1,2,...,N10,1,2,...,N-1,图中没有重边和自环。敌人在每条边上都布置了陷阱,每条边都有一个伤害属性 ww,每当小蓝经过一条边时就会受到这条边对应的 ww 的伤害。小蓝从结点 00 出发,沿着边行走,想要到达结点 N1N-1 营救小 QQ

小蓝有一种特殊的魔法可以使用,假设一条路径按照顺序依次经过了以下 LL 条边:e1,e2,...,eLe_1,e_2,...,e_L (可以出现重复的边),那么期间小蓝受到的总伤害就是 P=i=1Lw(ei)P=\sum_{i=1}^Lw(e_i)w(ei)w(e_i) 表示边 eie_i 的伤害属性。如果 LKL≥K,那么小蓝就可以从这 LL 条边当中选出连续出现的 KK 条边 ec,ec+1,...,ec+K1e_c,e_{c+1},...,e_{c+K−1} 并免去在这 KK 条边行走期间所受到的伤害,即使用魔法之后路径总伤害变为 P=Pi=cc+K1w(ei)P'=P-\sum_{i=c}^{c+K−1}w(e_i)。注意必须恰好选出连续出现的 KK 条边,所以当 L<KL<K 时无法使用魔法。

小蓝最多只可以使用一次上述的魔法,请问从结点 00 出发到结点 N1N-1 受到的最小伤害是多少?题目保证至少存在一条从结点 00N1N-1 的路径。

输入格式

第一行输入三个整数,N,K,MN,K,M,用空格分隔。接下来 MM 行,每行包含三个整数 u,v,wu,v,w,表示结点 uu 与结点 vv 之间存在一条伤害属性为 ww 的无向边。

输出格式

输出一行,包含一个整数,表示小蓝从结点 00 到结点 N1N-1 受到的最小伤害。

样例

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

样例说明

样例 11,存在路径:01230→1→2→3K=2K=2,如果在 0120→1→2 上使用魔法,那么答案就是 0+0+4=40+0+4=4;如果在 1231→2→3 上使用魔法,那么答案就是 2+0+0=22+0+0=2。再也找不到比 22 还小的答案了,所以答案就是 22

样例 22,存在路径:0101010→1→0→1→0→1K=5K=5,这条路径总计恰好走了 55 条边,所以正好可以用魔法消除所有伤害,答案是 00

评测用例规模与约定

对于 30%30\% 的评测用例,1N201≤N≤20

对于 50%50\% 的评测用例,1N1001≤N≤100

对于 100%100\% 的评测用例,1N10001≤N≤10001MN×(N1)21≤M≤\frac{N×(N−1)}21K101≤K≤100u,vN10≤u,v≤N-11w10001≤w≤1000