Kyopro Library
 
読み取り中…
検索中…
一致する文字列を見つけられません
dijkstra.hpp
[詳解]
1#pragma once
2#include"../../../kyopro_library/template.hpp"
3
4/// @brief ダイクストラ法
5/// @brief グラフ g に対し、頂点 start から各頂点までの最短距離を求める
6/// @note O(E log V)
7vector<ll> Dijkstra(const vector<vector<pair<int,ll>>>& g, int start=0) {
8 int n=g.size();
9 vector<ll> ret(n,INFL); ret[start]=0;
10 rpriority_queue<pair<ll,int>> pq; pq.push({0,start});
11
12 while(!pq.empty()) {
13 auto [tmp,now]=pq.top();pq.pop();
14 if(ret[now]<tmp) continue;
15 for(auto [nxt,cost]:g[now]) if(chmin(ret[nxt],ret[now]+cost)) pq.push({ret[nxt],nxt});
16 }
17
18 return ret;
19}
vector< ll > Dijkstra(const vector< vector< pair< int, ll > > > &g, int start=0)
ダイクストラ法
Definition dijkstra.hpp:7