#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
void mincammino(int N, int M, vector<int> X, vector<int> Y, vector<int> P, vector<long long>& D) {
    vector<vector<pair<int,int>>>legami(N);
    for(int i=0;i<M;i++){
        legami[X[i]].push_back({Y[i],P[i]});
    }
    D=vector<long long>(N,1000000000000000000);
    D[0]=0;
    queue<int>queue1;
    queue1.push(0);
    while(!queue1.empty()){
        int x=queue1.front();
        queue1.pop();
        for(int i=0;i<legami[x].size();i++){
            pair<int,int> u=legami[x][i];
            long long omega=D[x]+(long long)(u.second);
            if(omega<D[u.first])
            {
                D[u.first]=omega;
                queue1.push(u.first);

            }
        }
        
        
        //for(int i=0;i<)
    }
    for(int i=0;i<D.size();i++){
        if(D[i]==1000000000000000000)D[i]=-1;
    }
    return;
}
