#include "cyberland.h"
#include <vector>
#include <iostream>
using namespace std;
// subtask 1
double ac(int k, int f)
{
    // cout << k << " " << f;
    if (f == 0)
    {
        return 0;
    }
    else if (f == 2)
    {
        return (double)k / (double)2;
    }
    else
    {
        return (double)f;
    }
};
int _(int k)
{
    return k == 2 ? 1 : 2;
}
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)
{
    double MAX = (double)(5e9 + 0.1);
    vector<vector<double>> C(3, vector<double>(3, (double)(MAX)));
    vector<vector<bool>> V(3, vector<bool>(3, false));
    for (int i = 0; i < M; i++)
    {
        C[x[i]][y[i]] = (double)c[i];
        C[y[i]][x[i]] = (double)c[i];
        V[x[i]][y[i]] = true;
        V[y[i]][x[i]] = true;
    }
    if ((!V[0][H] && !V[0][_(H)]) || (!V[0][H] && !V[H][_(H)]))
    {
        return -1;
    }
    return min(ac(C[0][_(H)], arr[_(H)]) + C[_(H)][H], C[0][(H)]);
}
| # | 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... |