RT,WA 了第三个点。样例输出 18,但是和题解对照上去又没有看出什么错误 
还有一个问题(详见代码),不管我有没有注释那一行样例输出的结果都是 18,求是哪里出了问题 / UB 
// Version 2.3.4 by Eason_AC
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <map>
#include <vector>
#include <stack>
#include <ctime>
#include <set>
#include <queue>
#define Tl template<typename T>
#define F(T, i, a, b) for(T (i) = (a); (i) <= (b); ++(i))
#define R(T, i, a, b) for(T (i) = (a); (i) >= (b); --(i))
#define Fo(T, i, a, b, c) for(T (i) = (a); (i) <= (b); (i) += (c))
#define Re(T, i, a, b, c) for(T (i) = (a); (i) >= (b); (i) -= (c))
#define For(T, i, a, b, c) for(T (i) = (a); (i) <= (b); (i) *= (c))
#define Rep(T, i, a, b, c) for(T (i) = (a); (i) >= (b); (i) /= (c))
#define E for(int i = h[x]; i; i = e[i].nxt)
#define str(s, l) cin >> (s); int (l) = (s).size()
#define crstr(s, l) string (s); cin >> (s); int (l) = (s).size()
#define crstrline(s, l) string (s); getline(cin, (s)); int (l) = (s).size()
#define ll long long //No long long see your ancestor!!!
#define ull unsigned long long //Have long long see your ancestor!!!
#define lll __int128 //Have unsigned long long see your ancestor!!!
#define ld long double
#define YES puts("YES")
#define NO puts("NO")
#define Yes puts("Yes")
#define No puts("No")
#define yes puts("yes")
#define no puts("no")
#define iv inline void
#define ii inline int
#define ill inline ll
#define iull inline ull
#define i128 inline lll
#define ib inline bool
#define iT inline T
#define ilf inline double
#define ild inline ld
#define pii pair<int, int>
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define pq priority_queue
using namespace std;
namespace fastIO {
Tl iT read() {
T f = 1, x = 0; char c = getchar();
while(!isdigit(c)) {if(c == '-') f = -1; c = getchar();}
while(isdigit(c)) {x = x * 10 + c - '0'; c = getchar();}
return x * f;
}
Tl iv write(T x) {
if(x < 0) {putchar('-'); x = -x;}
if(x > 9) write(x / 10);
putchar(x % 10 + '0');
}
}
using namespace fastIO;
#define Rint read<int>()
#define Rll read<ll>()
#define Rull read<ull>()
#define R128 read<lll>()
#define MT int t = Rint; while(t--)
namespace fastExpress {
Tl iv print_char(T x, char ch) {write(x), putchar(ch);}
Tl iv char_print(char ch, T x) {putchar(ch); write(x);}
Tl iv print_space(T x) {print_char(x, ' ');}
Tl iv space_print(T x) {char_print(' ', x);}
Tl iv println(T x) {print_char(x, '\n');}
Tl iv lnprint(T x) {char_print('\n', x);}
Tl iv read_array1(T* a, int& n) {n = Rint; F(int, i, 1, n) a[i] = read<T>();}
Tl iv read_array2(T* a, int n) {F(int, i, 1, n) a[i] = read<T>();}
Tl iv print_array1(T *a, int n) {F(int, i, 1, n) print_char(a[i], " \n"[i == n]);}
Tl iv print_array2(T *a, int n) {println(n), print_array1(a, n);}
Tl iv print_array3(T *a, int n) {R(int, i, n, 1) print_char(a[i], " \n"[i == 1]);}
Tl iv print_array4(T* a, int n) {println(n), print_array3(a, n);}
Tl iv print_array_in_range1(T *a, int l, int r) {F(int, i, l, r) print_char(a[i], " \n"[i == r]);}
Tl iv print_array_in_range2(T* a, int l, int r) {R(int, i, r, l) print_char(a[i], " \n"[i == l]);}
Tl iv print_array_in_range3(T *a, int l, int r) {F(int, i, l, r) println(a[i]);}
Tl iv print_array_in_range4(T* a, int l, int r) {R(int, i, r, l) println(a[i]);}
Tl iv special_print_array1(T *a, int n) {print_space(n), print_array1(a, n);}
Tl iv special_print_array2(T *a, int n) {print_space(n), print_array3(a, n);}
iv print_string_in_range(string s, int l, int r) {F(int, i, l, r) putchar(s[i]);}
iv print_chars_in_range(char* a, int l, int r) {F(int, i, l, r) putchar(a[i]);}
Tl iv vector_print(vector<T> a, int l, int r) {F(int, i, l, r) print_char(a[i], " \n"[i == r]);}
Tl iv map_print(map<T, T> a, int l, int r) {F(int, i, l, r) print_char(a[i], " \n"[i == r]);}
Tl iv stack_print(stack<T> a, char ch) {while(!a.empty()) print_char(a.top(), ch), a.pop();}
Tl iv queue_print(queue<T> a, char ch) {while(!a.empty()) print_char(a.front(), ch), a.pop();}
Tl iv pq_print(pq<T> a, char ch) {while(!a.empty()) print_char(a.top(), ch), a.pop();}
iv filein(string s) {freopen((s + ".in").c_str(), "r", stdin);}
iv fileout(string s) {freopen((s + ".out").c_str(), "w", stdout);}
iv file(string s) {filein(s), fileout(s);}
}
using namespace fastExpress;
const int N = 5e4 + 7;
int cnt, h[N << 1], vis[N << 1], dis[N << 1];
struct edge {int v, to, nxt;}e[(N << 1) * 25];
iv a_e(int u, int v, int w = 0) {e[++cnt] = (edge){w, v, h[u]}; h[u] = cnt;}
iv dj(int s) {
memset(dis, 0x3f, sizeof(dis));
dis[s] = 0;
priority_queue<pii> q; q.push(mp(0, s));
while(!q.empty()) {
int x = q.top().se; q.pop();
if(vis[x]) continue; vis[x] = 1;
for(int i = h[x]; i; i = e[i].nxt) {
int y = e[i].to, z = e[i].v;
if(dis[y] > dis[x] + z) dis[y] = dis[x] + z, q.push(mp(-dis[y], y));
}
}
}
int main() {
// file("");
int n = Rint, m = Rint, k = Rint, s = Rint, t = Rint;
// printf("Key in n m k s t finished\n");
F(int, i, 1, m) {
int u = Rint, v = Rint, c = Rint;
a_e(u, v, c), a_e(v, u, c);
F(int, j, 1, k) a_e(u + (j - 1) * n, v + j * n), a_e(v + (j - 1) * n, u + j * n), a_e(u + j * n, v + j * n, c), a_e(v + j * n, u + j * n, c);
}
// printf("%d\n", k); //!!!就是这个地方,不管你有没有注释,结果都是一样的。
F(int, i, 1, k) a_e(t + (i - 1) * n, t + i * n);
dj(s); write(dis[t + k * n]);
return 0;
}