Lib/ダイクストラ(基本)
code:cpp
vector<int> dijkstra(vector<vector<pair<int,int>>> &g,int s){
vector<int> dt(g.size(),inf);
// auto compare = [](pair<int,int> a,pair<int,int> b){return a.first > a.second;};
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> que;
que.push(make_pair(0,s));
dts = 0;
while(!que.empty()){
int d = que.top().first;
int e = que.top().second;
//print(d,e);
que.pop();
if(d > dte) continue;
rep(i,ge.size()){
//cout << gei.first << endl;
//cout << ":" << dte << endl;
if(d+gei.second < dt[gei.first]){
que.push(make_pair(d+gei.second,gei.first));
dt[gei.first] = d+gei.second;
}
}
}
return dt;
}
M+NlogN