#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<int>>dist(N);
vector<vector<int>>V(N);
for (int i=0; i<M; i++){
    V[X[i]].push_back(Y[i]);
    dist[X[i]].push_back(D[i]);
}
D.resize(N);

D[0]=0;

vector<int>now;
for (int i=0; i<V[0].size(); i++){
    now.push_back(V[0][i]);
}

while (!(now.empty())){

int a=now.back();
now.pop_back();
for (int i=0; i<V[a].size(); i++){
    now.push_back(V[a][i]);
    D[V[a][i]]=D[a]+dist[a][i];
}
}

}

