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));
while(!que.empty()){
int d = que.top().first;
int e = que.top().second;
//print(d,e);
que.pop();
//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