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

扩展性良好的Dijkstra模版

时间:2024-10-04 12:33:09浏览次数:9  
标签: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

相关文章

  • C++学习:模版进阶:非类型模板参数 特化 分离编译
    目录一:非类型模版参数二:模版特化三:函数模版特化四:类模版特化一:全特化(将模板参数列表中所有的参数都确定化)二:偏特化(部分特化或更进一步限制)五:模版分离编译一:非类型模版参数非类型模版参数是在模版参数列表中,跟在模版参数后面的,就是用常量当参数(下面的n就是)templa......
  • 【C++标准模版库】map和set的介绍及使用
    map和set一.序列式容器和关联式容器二.set系列的使用1.set和multiset参考文档2.set类的介绍3.set的构造和迭代器4.set的增删查5.insert和迭代器遍历使用6.find和erase的使用7.erase迭代器失效问题8.lower_bound与upper_bound9.multiset和set的差异10.set解决:leetcode例题......
  • C++:模版初阶
    目录一、泛型编程二、函数模版概念格式原理 实例化模版参数的匹配原则 三、类模版定义格式实例化一、泛型编程   如何实现一个通用的交换函数呢?voidSwap(int&left,int&right){ inttemp=left; left=right; right=temp;}voidSwap(d......
  • Dijkstra算法详解【附算法代码与运行结果】
    算法背景Dijkstra算法是一种用于在加权图中找到单个源点到所有其他顶点的最短路径的算法。这种算法由荷兰计算机科学家艾兹格·戴克斯特拉(EdsgerW.Dijkstra)在1956年提出。它适用于有向图和无向图,并且图中的边权重必须是非负数。基本原理如下图所示,找到一条从v1(节点1)到v6(......
  • PbootCMS模版制作:当天发布的文章显示红色的方法
    在PbootCMS中,如果你想让当天发布的文章显示为红色,可以通过条件判断来实现这一功能。具体步骤如下:实现步骤获取当前日期:获取当前日期,并将其格式化为 m-d 格式。比较发布日期:比较文章的发布日期与当前日期是否相同。设置样式:如果发布日期与当前日期相同,则设......
  • java中多态的扩展性
    创建一个动物父类和狗,猫子类,当这些子类中有共同方法只是实现不同时,我们可以利用多态的扩展性classAnimal{publicvoideat(){System.out.println("吃饭");}publicvoidsheep(){System.out.println("睡觉");}}classDogextendsAnima......
  • 模版编译
    模版本质是个函数,模版执行最终生成一个vnode。vnode渲染到浏览器的DOM元素上,vnode让组件修改之后作更新。(响应式监听属性变化,属性变化之后生成新的render函数,进而生成新的vnode)with语法(有点反规则慎用)图灵完备:顺序执行循环判断的语言Vue组件可以用render代替......
  • 基于gin的web开发脚手架模版
    一、web开发模式1.传统的MVC模式:这个模式不太适合大型的web应用。2.CLD模式链接:https://github.com/Ruan0423/gin-web-Framework二、目录结构--web_app -controller -logic -dao -mysql -redis -models -pkg -settings settings.go -routers router.go ma......
  • 本地服务器怎样安装帝国CMS模版网站
    要在本地服务器上安装帝国CMS模板网站,你需要按照以下步骤操作:准备工作搭建本地服务器环境如果你还没有搭建本地服务器环境,可以选择使用集成开发环境(IDE)如XAMPP、WAMP、MAMP或LaravelValet等。这些工具可以快速搭建PHP、MySQL和Apache/Nginx服务器环境。下载帝国CMS安装......
  • C++模版
    文章目录一、函数模版1、模版的语法2、多个模版类型参数3、模版的实力化二、类模版1、using2、类模版解决问题一、函数模版1、模版的语法模版的关键字为template,后面跟<>尖括号,尖括号里面填类型,类型前面跟一个关键字typename,也可以用class模版生成的函数就......