#include #include #include #include using namespace std; using ll = long long; using Graph = vector>>; using pli = pair; const ll INF = 1LL<<50; int N, M; Graph G(100010); ll D[200010]; void Dijkstra(int src){ fill(&D[0], &D[0]+200010, INF); D[src]=0; D[src+N]=0; priority_queue, greater> Q; Q.push({0, src}); Q.push({0, src+N}); while(! Q.empty()){ auto [dist, cur] = Q.top(); Q.pop(); if(dist>D[cur]) continue; if (cur>N){ for (auto [dst, d]: G[cur-N]){ if (dist+d