当前位置: 首页 > news >正文

【备战蓝桥杯系列】单源最短路径Dijkstra算法模板

Dijkstra算法模板

蓝桥杯中也是会考到图论最短路的,一旦考到,基本是不会太难的,只要知道板子就基本能拿分了。

两个板子如下

朴素Dijkstra算法

适应情况:稠密图,正权边

时间复杂度 O(n^2 + m)

int dijkst(){memset(dist, 0x3f, sizeof dist);//初始化成无穷大dist[1] = 0;for(int i = 1; i <= n; i ++ ){//寻找所有点到起点的最短距离int t = -1;for(int j = 1; j <= n; j ++ ){//找到未确定且距离最小的点if(!st[j] && (t == -1 || dist[t] > dist[j]))t = j;}st[t] = true;//将该点确定for(int j = 1; j <= n; j ++ ){//用该点距离更新其他点dist[j] = min(dist[j], dist[t] + g[t][j]);}}if(dist[n] == 0x3f3f3f3f) return -1;return dist[n];
}
堆优化版dijkstra

适应情况:稀疏图,正权边

时间复杂度 O(mlongn) — 堆每次更新值时间复杂度是logn,而通过邻接表来存,

​ 每次只遍历与该点相连的边,所以总的遍历次数是m,故时间复杂度是mlogn

int dijkstra(){memset(dist, 0x3f, sizeof dist);dist[1] = 0;priority_queue<PII, vector<PII>,greater<PII>> heap;heap.push({0, 1});while(heap.size()){//第一步遍历auto t = heap.top();//第二步①找出未确定的距离最小的点heap.pop();int dis = t.first, ver = t.second;if(st[ver]) continue;st[ver] = true;//第二步②将该最短距离确定下来for(int i = he[ver]; i != -1; i = ne[i]){//第三步 更新dist数组int j = e[i];if(dist[j] > dist[ver] + w[i]){dist[j] = dist[ver] + w[i];heap.push({dist[j], j});//此处会产生冗余,对于产生新的最短距离的点,其{旧值距离,点}会成为冗余数据,//下沉到堆得下半部分}}}if(dist[n] == 0x3f3f3f3f) return -1;return dist[n];
}

相关文章:

【备战蓝桥杯系列】单源最短路径Dijkstra算法模板

Dijkstra算法模板 蓝桥杯中也是会考到图论最短路的&#xff0c;一旦考到&#xff0c;基本是不会太难的&#xff0c;只要知道板子就基本能拿分了。 两个板子如下 朴素Dijkstra算法 适应情况&#xff1a;稠密图&#xff0c;正权边 时间复杂度 O(n^2 m) int dijkst(){memse…...

嵌入式系统中端口号的理解与分析

每当看到有人的简历上写着熟悉 tcp/ip, http 等协议时, 我就忍不住问问他们: 你给我说说, 端口是啥吧! 可惜, 很少有人能说得让人满意... 所以这次就来谈谈端口(port), 这个熟悉的陌生人. 在此过程中, 还会谈谈间接层, naming service 等概念, IoC, 依赖倒置等原则以及 TCP 协议…...

3.自定义工程目录配置CMakeLists

问题背景 熟悉stm32keil开发的都知道&#xff0c;我们在编写不同的外设时&#xff0c;通常都会单独编写一个app文件夹或者是user文件夹之类的来存放不同外设功能的源文件和头文件。 在前面一节2.构建第一个工程并烧录到ESP32开发板-CSDN博客中&#xff0c;我们是使用了一个乐鑫…...

Vue3.0里为什么要用 Proxy API 替代 defineProperty API

一、Object.defineProperty 定义&#xff1a;Object.defineProperty() 方法会直接在一个对象上定义一个新属性&#xff0c;或者修改一个对象的现有属性&#xff0c;并返回此对象 为什么能实现响应式 通过defineProperty 两个属性&#xff0c;get及set get 属性的 getter 函…...

c++初阶------类和对象(下)

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…...

PMP考试:如何高效学习PMBOK?

PMBOK&#xff08;项目管理知识体系指南&#xff09;是PMP考试的核心教材&#xff0c;学习PMBOK对于备考PMP考试至关重要。那么我将分享一些高效学习PMBOK的方法和技巧&#xff0c;帮助同学们更好地掌握项目管理知识。 一、制定学习计划 在学习PMBOK之前&#xff0c;制定一个详…...

个人博客网站前端页面的实现

博客网站前端页面的实现 博客登录页 相关代码 login.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…...

Kotlin Retrofit 网络请求

一、添加依赖&#xff1a; //Retrofit 网络请求implementation("com.squareup.retrofit2:retrofit:2.3.0")implementation("com.squareup.retrofit2:converter-gson:2.3.0")//json转换 二、创建单例类&#xff1a; package com.example.buju.httpimport …...

pyside6 pytq PyDracula QVideoWidget视频只有声音没有画面

解决方案&#xff1a; 先不使用框架&#xff0c;纯pyside6代码&#xff0c;如果添加视频有画面有声音&#xff0c;那可以排除是硬件问题&#xff0c;如果没有画面只有声音&#xff0c;可能是视频解码器无法解码&#xff0c;换个格式的视频文件如果只有使用PyDracula 出问题&am…...

Python爬网页,不确定网页的编码,不需要用第三方库

Python爬网页&#xff0c;不确定网页的编码&#xff0c;不需要用第三方库&#xff0c;自己写个判断&#xff0c;乱拳打死老师傅 detect试了&#xff0c;不好用 apparent_encoding试了&#xff0c;不好用 encoding试了&#xff0c;不好用 headers里get试了&#xff0c;不好用…...

Web测试的基础流程(外加测试过程需要的注意5点)

前言 在Web工程过程中&#xff0c;基于Web系统的测试、确认和验收是一项重要而富有挑战性的工作。基于Web的系统测试与传统的软件测试不同&#xff0c;它不但需要检查和验证是否按照设计的要求运行&#xff0c;而且还要测试系统在不同用户的浏览器端的显示是否合适。 重要的是…...

项目解决方案:视频监控接入和录像系统设计方案(下)

目 录 1.概述 2. 建设目标及需求 2.1建设总目标 2.2 需求描述 ​2.3 需求分析 3.设计依据与设计原则 3.1设计依据 3.2 设计原则 4.建设方案设计 4.1系统方案设计 4.2组网说明 5.产品介绍 5.1视频监控综合资源管理平台介绍 5.2视频录像服务器和存储 5.2.…...

Python爬虫-使用Prefect框架实现一个可视化爬虫项目

前言 本文是该专栏的第19篇,后面会持续分享python爬虫干货知识,记得关注。 相信有的同学,在处理爬虫项目的时候,有时也会需要你将爬虫项目进行一个可视化展示,方便管理者能及时详细的了解当前爬虫任务的执行进度以及执行情况,甚至需要做一个爬虫监控预警的可视化任务。 …...

[hive面试真题]-基础理论篇

hive的工作流程 hive中分区表,分桶表 工作中hive分区表的应用示例 发现hive分区中的数据不对怎么处理 hive出现code 1 2 3 什么原因 ,怎么处理 工作中hive常见的文件格式 .压缩格式 工作时常用的hive函数 谈谈对窗口函数的理解 hive中如果出现数据倾斜 ,怎么发现 ,怎么…...

【其他】sd卡的照片在相机上能看到在电脑上却看不到

sd卡的照片在相机上能看到在电脑上却看不到 前情提要&#xff1a;太长不看版解决办法&#xff1a;思路&#xff1a;一、首先考虑恢复数据二、 解决文件后缀是exe的问题 前情提要&#xff1a; 在相机里可以看到照片和视频&#xff0c;但是SD卡通过读卡器插入电脑看不到&#x…...

Linux 之六:系统性能监控和挂载

系统性能 Linux系统中&#xff0c;有许多命令用于监测和分析性能指标。以下是一些常用的Linux性能分析命令&#xff1a; top&#xff1a;实时查看并监控CPU、内存以及各个进程的资源占用情况。htop&#xff08;需要安装&#xff09;&#xff1a;一个增强版的 top 命令&#x…...

【Web】浅聊Java反序列化之C3P0——JNDI注入利用

目录 简介 原理分析 EXP 前文&#xff1a;【Web】浅聊Java反序列化之C3P0——URLClassLoader利用 【Web】浅聊Java反序列化之C3P0——不出网Hex字节码加载利用 简介 出网的情况下&#xff0c;这个C3P0的Gadget可以和fastjson&#xff0c;Snake YAML , JYAML,Yamlbeans , …...

Java项目:基于Springboot+vue实现的付费自习室系统设计与实现(源码+数据库+毕业论文)附含微信小程序端代码

一、项目简介 本项目是一套基于Springbootvue实现的付费自习室系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…...

C++写食堂菜品管理系统

说明:本博文来自CSDN-问答板块,题主提问。 需要:学校拟开发一套食堂菜品管理系统,以便对菜品和同学们的评价进行管理,其中包含如下信息: 商户:商户名称、柜面位置、电话…… 菜品:菜品编号、菜品名称、价格、所属商户…… 学生:注册账号、昵称、电话…… 食堂里的商户…...

vue 在线预览word

1 mammoth 先找的是mammoth这个插件yarn add mammoth,版本是1,7.0 参考网上的示例使用如下&#xff1a; import mammoth from "mammoth"; const vHtml ref("") const readExcelFromRemoteFile (url) >{var xhr new XMLHttpRequest();xhr.open("…...

从零到精通:Ryujinx模拟器全方位技术指南

从零到精通&#xff1a;Ryujinx模拟器全方位技术指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx Ryujinx是一款采用C#开发的开源Nintendo Switch模拟器&#xff0c;通过动态编译和…...

让开发流程更高效:为 Visual Studio 订阅用户解锁 Syncfusion嵌

一、什么是requests&#xff1f; requests 是一个用于发送HTTP请求的 Python 库。 它可以帮助你&#xff1a; 轻松发送GET、POST、PUT、DELETE等请求 处理Cookie、会话等复杂性 自动解压缩内容 处理国际化域名和URL 二、应用场景 requests 广泛应用于以下实际场景&#xff1a; …...

【2026年最新600套毕设项目分享】基于Spring Boot的音乐播放网站(14348)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦二、资料介绍完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&#xff08;无需搭建环境&#xff…...

Go 内存逃逸与逃逸分析

Go 内存逃逸与逃逸分析&#xff1a;高效内存管理的关键 在Go语言中&#xff0c;内存管理是性能优化的核心之一&#xff0c;而内存逃逸与逃逸分析则是理解其底层机制的重要概念。简单来说&#xff0c;内存逃逸是指本应在栈上分配的变量&#xff0c;由于某些原因被分配到了堆上&…...

【Python机器学习】零基础掌握SGDOneClassSVM线性分类器

如何高效地识别异常数据点? 在数据分析、金融风控、网络安全等多个领域,识别异常数据点是一个常见但又具有挑战性的问题。传统的方法可能需要复杂的计算和专门的知识背景,但有没有一种更简单、更直观的方式来解决这个问题呢? 假设一个金融公司需要识别可能的欺诈信用卡交…...

通义千问2.5-0.5B-Instruct实战教程:RTX3060推理速度调优

通义千问2.5-0.5B-Instruct实战教程&#xff1a;RTX3060推理速度调优 5亿参数&#xff0c;1GB显存&#xff0c;RTX3060上实现180 tokens/s的推理速度 1. 开篇&#xff1a;小模型的大能量 你是否遇到过这样的困境&#xff1a;想要在本地运行AI大模型&#xff0c;但显存不够用&a…...

OpenClaw+Phi-3-mini-128k-instruct成本对比:自建模型VS商用API实测

OpenClawPhi-3-mini-128k-instruct成本对比&#xff1a;自建模型VS商用API实测 1. 为什么需要做这个成本对比 上个月我在用OpenClaw自动化处理公司季度报表时&#xff0c;突然收到OpenAI API的账单提醒——单月费用突破了800元。作为一个个人开发者&#xff0c;这个数字让我不…...

卡梅德生物技术快报|重组蛋白昆虫表达培养基对比与工艺选型

摘要本文为卡梅德生物技术快报技术文章&#xff0c;围绕重组蛋白昆虫表达上游工艺&#xff0c;对比三款工业级无血清培养基性能&#xff0c;给出 Sf9/High-Five 细胞适配方案、驯化流程、培养参数与质控要点&#xff0c;为生物制药上游工艺开发与放大提供工程化实践指导。1 引言…...

Qwen3.5-2B网络编程应用:构建基于WebSocket的实时多模态聊天服务

Qwen3.5-2B网络编程应用&#xff1a;构建基于WebSocket的实时多模态聊天服务 1. 实时聊天服务的价值与挑战 想象一下这样的场景&#xff1a;电商客服需要同时处理图片咨询和文字提问&#xff0c;在线教育平台要实时解答学生上传的题目截图&#xff0c;或是设计团队需要AI即时…...

AI 时代,计算机专业学生该怎么学?恫

整体排查思路 我们的目标是验证以下三个环节是否正常&#xff1a; 登录成功时&#xff1a;服务器是否正确生成了Session并返回了包含正确 JSESSIONID的Cookie给浏览器。 浏览器端&#xff1a;浏览器是否成功接收并存储了该Cookie。 后续请求&#xff1a;浏览器在执行查询等操作…...