Skip to content

堆优化的dijk ​

cpp
void dijk(){
    priority_queue<pair<int,int>> q;
    memset(d,0x3f,sizeof d);
    memset(vis,0,sizeof vis);
    d[1]=0;
    q.push({0,1});
    while(!q.empty()){
        int u=q.top().second;
        q.pop();
        if(vis[u])continue;
        vis[u]=1;
        for(auto [v,c]:adj[u]){
            if(d[v]>d[u]+c){
                d[v]=d[u]+c;
                q.push({-d[v],v});
            }
        }
    }
}