#include <bits/stdc++.h>
using namespace std ;
#define ll long long
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define fir first
#define sec second
#define piint pair < int , int >
#define FOR( i , a , b ) for (int i = (a) , _b = (b) ; i <= _b ; i ++ )
#define pb push_back
#define str string
#define ALL(a) (a).begin() , (a).end()
#define rep( i , a , b) for (int i = (a) ; i < (b) ; i ++ )
#define ld long double
const int maxn = 1e4;
#define debug 0
#define oo (ll)(1e18)
#define pLL pair < ll , ll >
struct tr
{
ll du ;
int u , id ;
};
ll n , m , s , t , k ;
vector < pLL > a[303][maxn+3] ;
ll d[303][maxn+3];
struct cmp {
bool operator() (const tr& a , const tr& b ){
return a.du > b.du ;
}
} ;
//um , ta se duyet all con truoc , va se add them voi moi con i
// o ( 6000 * ( (n + m) * (log n )))
void JQK ( int st , int ed) {
FOR ( i , 0 , k )
FOR ( j , 1 , n )
d[i][j] = oo ;
FOR ( i , 0 , k )
d[i][st] = 0 ;
priority_queue < tr , vector < tr > , cmp > pq;
// priority_queue < pLL , vector < pLL > , greater< pLL > > pq_2 ;
// pq_2.push ({d[0][st] , st }) ;
pq.push( { d[0][st] , st , 0 }) ;
while (pq.size()){
auto [du , u , id ] = pq.top() ;
pq.pop() ;
if ( du > d[id][u] ) continue ;
// for (auto [v,val] : a[0][u]){
// if ( d[0][v] > d[0][u] + val ){
// d[0][v] = d[0][u] + val ;
// if (debug){
// cout << "d[0][" << v << "] = :" << d[0][v] << " : = v0 = " << ' ' << v << " : U = : " << u<< '\n';
// }
// pq.push ( { d[0][v] , v , id }) ;
// }
// }
// neu duong cua id dang duoc su dung thi
// -> hay chieu cua no cung se co co hoi duoc tan dung tren duong di
// -> tuc la voi moi con duong a[0] de co th
for (auto [v,val] : a[0][u]){
if ( d[0][v] > d[id][u] + val ){
d[0][v] = d[id][u] + val ;
if (debug){
cout << "d[0][" << v << "] = :" << d[0][v] << " : = v = " << ' ' << v << ' ' << "id = :" << id << " : U = : " << u<< '\n';
}
pq.push ( { d[0][v] , v , 0 }) ;
}
}
bool ok = 1 ;
if (ok){
FOR ( i , 0 , k ){
for (auto [v,val] : a[i][u]){
if ( d[i][v] > d[0][u] + val ){
d[i][v] = d[0][u] + val ;
if (debug){
cout << "d["<< i<< "][" << v << "] = :" << d[i][v] << " : = v = " << ' ' << v << ' ' << "id = :" << i << " : U = : " << u<< '\n';
}
pq.push ( { d[i][v] , v , i }) ;
}
}
}
}
}
}
ll u , v , w ;
void input(){
int q ; cin >> q;
while (q -- ){
cin >> n >> m >> k >> s >> t ;
FOR ( i , 0 , k )
FOR ( j , 1 , n ) a[i][j].clear() ;
FOR ( i , 1 , m ){
cin >> u >> v >> w ;
a[0][u].pb ({ v , w}) ;
}
FOR ( i , 1 , k ){
cin >> u >> v >> w ;
a[i][u].pb ({ v , w }) ;
a[i][v].pb ({ u , w }) ;
}
JQK( s , t ) ;
ll res = oo ;
FOR ( i , 0 , k ) res = min ( res , d[i][t]) ;
if (res == oo) cout << -1 << '\n';
else cout << res << '\n' ;
}
// 4 DAM ac pls
}
#define name "Traffic Network"
int main(){
fast
if(fopen(name".INP","r")) {
freopen (name".INP","r",stdin);
freopen (name".OUT","w",stdout);
}
input() ;
cerr << "\nTIME: = " << (1.0*clock())/CLOCKS_PER_SEC << '\n';
return(0) ;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQgOyAKCgojZGVmaW5lIGxsIGxvbmcgbG9uZyAKI2RlZmluZSBmYXN0IGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwojZGVmaW5lIGZpciBmaXJzdCAKI2RlZmluZSBzZWMgc2Vjb25kIAojZGVmaW5lIHBpaW50IHBhaXIgPCBpbnQgLCBpbnQgPgojZGVmaW5lIEZPUiggaSAsIGEgLCBiICkgZm9yIChpbnQgaSA9IChhKSAsIF9iID0gKGIpIDsgaSA8PSBfYiA7IGkgKysgKSAgCiNkZWZpbmUgcGIgcHVzaF9iYWNrIAojZGVmaW5lIHN0ciBzdHJpbmcgCiNkZWZpbmUgQUxMKGEpIChhKS5iZWdpbigpICwgKGEpLmVuZCgpIAojZGVmaW5lIHJlcCggaSAsIGEgLCBiKSBmb3IgKGludCBpID0gKGEpIDsgaSA8IChiKSA7IGkgKysgKQojZGVmaW5lIGxkIGxvbmcgZG91YmxlCmNvbnN0IGludCBtYXhuID0gMWU0OwojZGVmaW5lIGRlYnVnIDAKI2RlZmluZSBvbyAobGwpKDFlMTgpCgojZGVmaW5lIHBMTCBwYWlyIDwgbGwgLCBsbCA+ICAKc3RydWN0IHRyCnsKCWxsIGR1IDsKCWludCB1ICwgaWQgOyAKfTsKbGwgbiAsIG0gLCBzICwgdCAsIGsgOwp2ZWN0b3IgPCBwTEwgPiBhWzMwM11bbWF4biszXSA7CmxsIGRbMzAzXVttYXhuKzNdOwpzdHJ1Y3QgY21wIHsKCWJvb2wgb3BlcmF0b3IoKSAoY29uc3QgdHImIGEgLCBjb25zdCB0ciYgYiApewoJCXJldHVybiBhLmR1ID4gYi5kdSA7IAoJfQp9IDsKLy91bSAsIHRhIHNlIGR1eWV0IGFsbCBjb24gdHJ1b2MgLCB2YSBzZSBhZGQgdGhlbSB2b2kgbW9pIGNvbiBpIAovLyBvICggNjAwMCAqICggKG4gKyBtKSAqIChsb2cgbiApKSkgCnZvaWQgSlFLICggaW50IHN0ICwgaW50IGVkKSB7CglGT1IgKCBpICwgMCAsIGsgKQoJRk9SICggaiAsIDEgLCBuICkKCWRbaV1bal0gPSBvbyA7CglGT1IgKCBpICwgMCAsIGsgKQoJZFtpXVtzdF0gPSAwIDsKCXByaW9yaXR5X3F1ZXVlIDwgdHIgLCB2ZWN0b3IgPCB0ciA+ICwgY21wID4gcHE7CgkvLyBwcmlvcml0eV9xdWV1ZSA8IHBMTCAsIHZlY3RvciA8IHBMTCA+ICwgZ3JlYXRlcjwgcExMID4gPiBwcV8yIDsgCgkvLyBwcV8yLnB1c2ggKHtkWzBdW3N0XSAsIHN0IH0pIDsKCXBxLnB1c2goIHsgZFswXVtzdF0gLCBzdCAsIDAgfSkgOwoJd2hpbGUgKHBxLnNpemUoKSl7CgkJYXV0byBbZHUgLCB1ICwgaWQgXSA9IHBxLnRvcCgpIDsKCQlwcS5wb3AoKSA7CgkJaWYgKCBkdSA+IGRbaWRdW3VdICkgY29udGludWUgOyAKCQkvLyBmb3IgKGF1dG8gW3YsdmFsXSA6IGFbMF1bdV0pewoJCS8vIAlpZiAoIGRbMF1bdl0gPiBkWzBdW3VdICsgdmFsICl7CgkJLy8gCQlkWzBdW3ZdID0gZFswXVt1XSArIHZhbCA7CgkJLy8gCQlpZiAoZGVidWcpewoJCS8vIAkJCWNvdXQgPDwgImRbMF1bIiA8PCB2IDw8ICJdID0gOiIgPDwgZFswXVt2XSA8PCAiIDogPSB2MCA9ICIgPDwgJyAnIDw8IHYgPDwgIiA6IFUgPSA6ICIgPDwgdTw8ICdcbic7IAoJCS8vIAkJfQoJCS8vIAkJcHEucHVzaCAoIHsgZFswXVt2XSAsIHYgLCBpZCB9KSA7IAoJCS8vIAl9CgkJLy8gfQoJCS8vIG5ldSBkdW9uZyBjdWEgaWQgZGFuZyBkdW9jIHN1IGR1bmcgdGhpIAoJCS8vIC0+IGhheSBjaGlldSBjdWEgbm8gY3VuZyBzZSBjbyBjbyBob2kgZHVvYyB0YW4gZHVuZyB0cmVuIGR1b25nIGRpCgkJLy8gLT4gdHVjIGxhIHZvaSBtb2kgY29uIGR1b25nIGFbMF0gZGUgY28gdGgKCQlmb3IgKGF1dG8gW3YsdmFsXSA6IGFbMF1bdV0pewoJCQlpZiAoIGRbMF1bdl0gPiBkW2lkXVt1XSArIHZhbCApewoJCQkJZFswXVt2XSA9IGRbaWRdW3VdICsgdmFsIDsKCQkJCWlmIChkZWJ1Zyl7CgkJCQkJY291dCA8PCAiZFswXVsiIDw8IHYgPDwgIl0gPSA6IiA8PCBkWzBdW3ZdIDw8ICIgOiA9IHYgPSAiIDw8ICcgJyA8PCB2IDw8ICcgJyA8PCAiaWQgPSA6IiA8PCBpZCA8PCAiIDogVSA9IDogIiA8PCB1PDwgJ1xuJzsgCgkJCQl9CgkJCQlwcS5wdXNoICggeyBkWzBdW3ZdICwgdiAsIDAgfSkgOyAKCQkJfQoJCX0KCQlib29sIG9rID0gMSA7CgkJaWYgKG9rKXsKCQkJRk9SICggaSAsIDAgLCBrICl7CgkJCQlmb3IgKGF1dG8gW3YsdmFsXSA6IGFbaV1bdV0pewoJCQkJCWlmICggZFtpXVt2XSA+IGRbMF1bdV0gKyB2YWwgKXsKCQkJCQkJZFtpXVt2XSA9IGRbMF1bdV0gKyB2YWwgOwoJCQkJCQlpZiAoZGVidWcpewoJCQkJCQkJY291dCA8PCAiZFsiPDwgaTw8ICJdWyIgPDwgdiA8PCAiXSA9IDoiIDw8IGRbaV1bdl0gPDwgIiA6ID0gdiA9ICIgPDwgJyAnIDw8IHYgPDwgJyAnIDw8ICJpZCA9IDoiIDw8IGkgIDw8ICIgOiBVID0gOiAiIDw8IHU8PCAnXG4nOyAKCQkJCQkJfQoJCQkJCQlwcS5wdXNoICggeyBkW2ldW3ZdICwgdiAsIGkgfSkgOyAKCQkJCQl9CgkJCQl9CgkJCX0KCQl9Cgl9Cn0KbGwgdSAsIHYgLCB3IDsgCnZvaWQgaW5wdXQoKXsKCWludCBxIDsgY2luID4+IHE7Cgl3aGlsZSAocSAtLSApewoJCWNpbiA+PiBuID4+IG0gPj4gayA+PiBzID4+IHQgOwoJCUZPUiAoIGkgLCAwICwgayApCgkJRk9SICggaiAsIDEgLCBuICkgYVtpXVtqXS5jbGVhcigpIDsKCQlGT1IgKCBpICwgMSAsIG0gKXsKCQkJY2luID4+IHUgPj4gdiA+PiB3IDsKCQkJYVswXVt1XS5wYiAoeyB2ICwgd30pIDsgIAoJCX0KCQlGT1IgKCBpICwgMSAsIGsgKXsKCQkJY2luID4+IHUgPj4gdiA+PiB3IDsgCgkJCWFbaV1bdV0ucGIgKHsgdiAsIHcgfSkgOwoJCQlhW2ldW3ZdLnBiICh7IHUgLCB3IH0pIDsKCQl9CgkJSlFLKCBzICwgdCApIDsKCQlsbCByZXMgPSBvbyA7CgkJRk9SICggaSAsIDAgLCBrICkgcmVzID0gbWluICggcmVzICwgZFtpXVt0XSkgOwoJCWlmIChyZXMgPT0gb28pIGNvdXQgPDwgLTEgPDwgJ1xuJzsKCQllbHNlIGNvdXQgPDwgcmVzIDw8ICdcbicgOwoJfQoJLy8gNCBEQU0gYWMgcGxzCn0KI2RlZmluZSBuYW1lICJUcmFmZmljIE5ldHdvcmsiIAppbnQgbWFpbigpewogICAgZmFzdCAKICAgIGlmKGZvcGVuKG5hbWUiLklOUCIsInIiKSkgewogICAgICAgIGZyZW9wZW4gKG5hbWUiLklOUCIsInIiLHN0ZGluKTsKICAgICAgICBmcmVvcGVuIChuYW1lIi5PVVQiLCJ3IixzdGRvdXQpOwogICAgfQogICAgaW5wdXQoKSA7CiAgICBjZXJyIDw8ICJcblRJTUU6ID0gIiA8PCAoMS4wKmNsb2NrKCkpL0NMT0NLU19QRVJfU0VDIDw8ICdcbic7CiAgICByZXR1cm4oMCkgOwp9