#include "cyberland.h"
#include "bits/stdc++.h"
using namespace std;
double solve(int n,int m,int k,int h,vector<int> x,vector<int> y,vector<int> c,vector<int> arr){
vector <pair<int,int>> g[m+1];
map <pair<int,int>,int> mp;
for (int i = 0;i < m;i++){
g[x[i]].push_back({y[i],c[i]});
g[y[i]].push_back({x[i],c[i]});
mp[{x[i],y[i]}] = c[i];
mp[{y[i],x[i]}] = c[i];
}
queue <int> q;
vector <int> pr(n,-1);
vector <bool> vs(n);
vs[0] = 1;
q.push(0);
while (!q.empty()){
int nd = q.front();
q.pop();
if (nd == h)
break;
for (auto &[to,w] : g[nd]){
if (!vs[to]){
q.push(to);
vs[to] = 1;
pr[to] = nd;
}
}
}
vector <int> pt;
for (int i = h;~i;i = pr[i]){
pt.push_back(i);
}
reverse(pt.begin(),pt.end());
double p = 0;
for (int i = 0;i < pt.size()-1;i++){
p += mp[{pt[i],pt[i+1]}];
}
return p;
}