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

void mincammino(int N, int M, vector<int> X, vector<int> Y, vector<int>P, vector<long long>& D)
{
    vector<vector<array<ll,2>>> grafo(N);
    D.assign(N,1e14);
    for(int i=0;i<M;i++)
    {
        grafo[X[i]].push_back({Y[i],P[i]});
    }
    D[0]=0;
    priority_queue<array<ll,2>> pq;
    pq.push({0,0});
    while(!pq.empty())
    {
        auto [d,node]=pq.top();
        d=-d;
        pq.pop();
        if(d>D[node])
        {
             continue;
        }    
        else
        {
            for(auto [v,w]:grafo[node])
            {
                if(w+d<D[v])
                {
                    D[v]=w+d;
                    pq.push({-d-w,v});
                }
            }
        }
    }
    for(int i=0;i<N;i++)
    {
        if(D[i]==1e14)
        {
            D[i]=-1;
        }
        //cout<<D[i];
    }
    


}