#include <bits/stdc++.h>
using namespace std;
const double INF = 5e9+0.1;
const int mxN = 5;
vector<pair<int,int>> adj[mxN];
vector<int> ar;
double ans=INF;
void dfs(int u,int par,int h,double cost){
if(u==h){
ans=min(ans,cost);
return;
}
if(ar[u]==2) cost/=2;
for(auto it:adj[u]){
if(it.first^par){
dfs(it.first,u,h,cost+it.second);
}
}
}
double solve(int N, int M, int K, int H, vector<int> x, vector<int> y, vector<int> c, vector<int> arr){
ar=arr;
for(int i=1;i<=N;++i) adj[i].clear();
for(int i=0;i<M;++i){
adj[x[i]].push_back({y[i],c[i]});
adj[y[i]].push_back({x[i],c[i]});
} ans=INF;
dfs(0,-1,H,0);
return (ans==INF?-1:ans);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |