auto dj = [&](int start, vector& dis, vector >>& mp){ priority_queue > q; dis[start] = 0; q.push({0, start}); while(!q.empty()){ auto [cost, cur] = q.top(); q.pop(); if(cost>dis[cur]) continue; for(auto [next, distance]: mp[cur]){ if(dis[next]<=cost+distance) continue; dis[next] = cost+distance; q.push({dis[next], next}); } } };



