首页 > 其他分享 >扩展性良好的Dijkstra模版

扩展性良好的Dijkstra模版

时间:2024-10-04 12:33:09浏览次数:15  
标签:std tmp dist cur int 模版 扩展性 Dijkstra vector

void dijkstra(int n, int x, std::vector<std::vector<int>> &p, std::vector<std::vector<int>> &w, std::vector<int> &dist) {
// n:点数  x:初始点  p,w:图  dist:距离    
std::vector<bool> st(n + 1, false);
    std::priority_queue<PII, std::vector<PII>, std::greater<PII>> h;
    dist[x] = 0;
    h.push({dist[x], x});
    while (h.size()) {
        int cur = h.top().second;
        h.pop();
        if (st[cur])
            continue;
        st[cur] = true;
        for (int i = 0; i < p[cur].size(); i++) {
            int tmp = p[cur][i], len = w[cur][i];
            if (dist[tmp] > dist[cur] + len) {
                dist[tmp] = dist[cur] + len;
                h.push({dist[tmp], tmp});
            }
        }
    }
    return ;
}

标签:std,tmp,dist,cur,int,模版,扩展性,Dijkstra,vector
From: https://www.cnblogs.com/silverhand-dy/p/18446508

相关文章

  • PbootCMS模版制作:当天发布的文章显示红色的方法
    在PbootCMS中,如果你想让当天发布的文章显示为红色,可以通过条件判断来实现这一功能。具体步骤如下:实现步骤获取当前日期:获取当前日期,并将其格式化为 m-d 格式。比较发布日期:比较文章的发布日期与当前日期是否相同。设置样式:如果发布日期与当前日期相同,则设......
  • C++模版
    文章目录一、函数模版1、模版的语法2、多个模版类型参数3、模版的实力化二、类模版1、using2、类模版解决问题一、函数模版1、模版的语法模版的关键字为template,后面跟<>尖括号,尖括号里面填类型,类型前面跟一个关键字typename,也可以用class模版生成的函数就......