# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1202145 | ezzzay | Cyberland (APIO23_cyberland) | C++20 | 0 ms | 0 KiB |
#include <cassert>
#include <cstdio>
#include <vector>
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define ll double
const int MX=3e5;
vector< pair<int,ll> >v[MX];
ll dst[MX];
void dfs(int a, int p){
for(auto [b,c] : v[a]){
if(b==p)continue;
dst[b]=dst[a]+c;
dfs(b,a);
}
}
double solve(int N, int M, int K, int H, std::vector<int> x, std::vector<int> y, std::vector<int> c, std::vector<int> arr) {
for(int i=0;i<N;i++){
dst[i]=0;
v[i].clear();
}
for(int i=0;i<M;i++){
v[x[i]].pb({y[i],c[i]});
v[y[i]].pb({x[i],c[i]});
}
dfs(0,-1);
return dst[H];
}
int main() {
int T;
assert(1 == scanf("%d", &T));
while (T--){
int N,M,K,H;
assert(4 == scanf("%d %d %d\n%d", &N, &M, &K, &H));
std::vector<int> x(M);
std::vector<int> y(M);
std::vector<int> c(M);
std::vector<int> arr(N);
for (int i=0;i<N;i++)
assert(1 == scanf("%d", &arr[i]));
for (int i=0;i<M;i++)
assert(3 == scanf("%d %d %d", &x[i], &y[i], &c[i]));
printf("%.12lf\n", solve(N, M, K, H, x, y, c, arr));
}
}