用于求解有向带非负权图每个点到源点的最短路径问题
时间复杂度O(mlogm)
int n,m,s;
vector<pii>e[maxn];//pii:{去往的点,权值}
int d[maxn],vis[maxn];
priority_queue<pii>q;//pii:{-与源点距离,点} void dijkstra(int s){rep(i,1,n)d[i]=inf;d[s]=0;q.push(pii{0,s});while(!q.empty()){pii t=q.top();q.pop();int u=t.se;if(vis[u])continue;vis[u]=1;for(auto y:e[u]){int v=y.fi;int w=y.se;if(d[v]>d[u]+w){d[v]=d[u]+w;q.push(pii{-d[v],v});}}}
}