#include <bits/stdc++.h>
using namespace std;
#define ll long long

void mincammino(int N, int M, vector<int> X, vector<int> Y, vector<int> P, vector<long long>& dist) {
    vector<vector<pair<ll,int>>> adj;
    vector<bool> visited;

    adj.resize(N);
    visited.resize(N);

    for(int i = 0; i < M; i++){
        adj[X[i]].push_back({P[i], Y[i]});
    }

    fill(dist.begin(), dist.end(), -1);
    priority_queue<pair<ll,int>, vector<pair<ll,int>>, std::greater<pair<ll,int>>> to_process; to_process.push({0,0});

    while(!to_process.empty()){
        auto[d, n] = to_process.top(); to_process.pop();
        
        if(visited[n]) continue;
        dist[n] = d;
        visited[n] = true;
    
        for(auto[w,t] : adj[n]){
            to_process.push({w+d,t});
        }
    }
}
