#include <vector>
#include <algorithm>
#include <bits/stdc++.h>
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>>> G(N);

    for(int i=0; i<M; i++){
        int x=X[i], y=Y[i], p=P[i];
        G[x].emplace_back(y, p);
    }

    priority_queue<pair<long long ,int>> Q;
    fill(D.begin(), D.end(), -1);
    Q.emplace(0, 0);

    while(!Q.empty()){
        auto [a, b] = Q.top();
        a=-a;
        Q.pop();
        if(D[b]>=0){
            continue;
        }
        D[b]=a;
        for(auto [c, d] : G[b]){
            Q.emplace(-(d+a), c);
        }
    }

    
}
