#include "bits/stdc++.h"
#include "cyberland.h"
// #include "stub.cpp"
using namespace std;
#define ff first
#define ss second
const long long INF = 1e16 + 6;
vector <vector <pair <int, int>>> v; 
double solve(int n, int m, int k, int h, vector<int> x, vector<int> y, vector<int> c, vector<int> a) {
    double ans = INF;
    k = min(k, 70);
    v.clear();
    v.resize(n+1);
    for(int i = 0; i < m; i++) {
        v[x[i]].push_back({y[i], c[i]});
        v[y[i]].push_back({x[i], c[i]});
    }
    vector <vector <double>> dis(n+1, vector <double> (k+1, INF));
    priority_queue <pair <double, int>> q, q1;
    dis[0][0] = 0;
    q.push({0, 0});
    for(int k1 = 0; k1 <= k; k1++) {
        while(!q.empty()) {
            double ds = -q.top().ff;
            int i = q.top().ss;
            q.pop();
            if(i == h or dis[i][k1] != ds) continue;
            for(auto [j, w] : v[i]) {
                double dss = ds + w;
                if(dis[j][k1] > dss) {
                    dis[j][k1] = dss;
                    q.push({-dss, j});
                }
                if(a[j] == 0 and dis[j][k1] != 0) {
                    dis[j][k1] = 0;
                    q.push({0, j});
                }
                if(a[j] == 2 and k1 < k) {
                    dss /= 2;
                    if(dis[j][k1+1] > dss) {
                        dis[j][k1+1] = dss;
                        q1.push({-dss, j});
                    }
                }
            }
        }
        q = q1;
        while(!q1.empty())
            q1.pop();
    }
    for(int i = 0; i <= k; i++) {
        ans = min(ans, dis[h][i]);
    }
    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... |