模板:Dijkstra
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pque;
pque.emplace(s, 0);
dis[s] = 0;
while (pque.size()) {
auto [d, u] = pque.top();
pque.pop();
if (vis[u]) continue;
vis[u] = 1;
for (int i = hd[u]; i; i = nx[i]) {
if (vis[v[i]]) continue;
if (dis[v[i]] > d + w[i]) {
dis[v[i]] = d + w[i];
pque.emplace(dis[v[i]], v[i]);
}
}
}

浙公网安备 33010602011771号