#include "bits/stdc++.h"
using namespace std;
using ll = long long;

// massimale M da non superare
// N quadri totali di valore V[i]

void mincammino(int N, int M, vector<int> X, vector<int> Y, vector<int> P, vector<long long>& D) {
    for (auto &u: D) u = 1e18;
    vector<vector<pair<int, ll>>> adj(N);
    for (int i = 0; i < M; i++)
        adj[X[i]].emplace_back(Y[i], P[i]);
    priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<>> pq;
    pq.emplace(D[0] = 0, 0);
    while (!pq.empty()) {
        auto [d, u] = pq.top(); pq.pop();
        if (d > D[u]) continue;
        for (auto [v, w]: adj[u])
            if (D[v] > D[u] + w)
                pq.emplace(D[v] = D[u] + w, v);
    }
    for (auto &u: D)
        if (u == 1e18)
            u = -1;
}