蓝桥杯每日一题(Dijkstra最短路算法)

//1488最短距离

是一个多源的,构造一个0号点,到所有的源点的距离为0。以0号点为起点转换成了单源最短路。

//错误思路:一个点一个点地单源实现,小的话就更新,但是由于每次更新时候比较的值是以其他源点为起点的值。所以是错误的。

注意N和M的值:要保存无向图。

#include<bits/stdc++.h>
using namespace std;
//1448 最短距离
typedef pair<int,int> PII;
const int N=1e5+10,M=N*3;
int e[M],ne[M],h[N],w[M],dis[N],st[N],idx;
int n,m,k;void add(int x,int y,int v)
{e[idx]=y;ne[idx]=h[x];w[idx]=v;h[x]=idx++;
}
void dijkstra(int en)
{priority_queue<PII,vector<PII>,greater<PII>>q;q.push({0,en});while(q.size()){auto t=q.top();q.pop();int dist=t.first,x=t.second;if(st[x])continue;st[x]=1;for(int i=h[x];i!=-1;i=ne[i]){int u=e[i];if(dis[u]>dist+w[i]){dis[u]=dist+w[i];q.push({dis[u],u});}}}}
int main()
{cin>>n>>m;memset(dis,0x3f,sizeof(dis));memset(h,-1,sizeof(h));memset(st,0,sizeof(st));while(m--){int x,y,v;cin>>x>>y>>v;add(x,y,v);add(y,x,v);//忘记了}cin>>k;while(k--){int x;cin>>x;dis[0]=0;add(0,x,0);}dijkstra(0);int q;cin>>q;while(q--){int x;cin>>x;cout<<dis[x]<<endl;}}

849. Dijkstra求最短路 

写错了两个地方:

1、st的判断,要找堆里面还没有被确定最短路的点,所以要在for外面判断。不会出现在for中找到一个点其和当前的top点相连并且还已经st==1了

2、add的调用:和1一样的错误,要知道是有向图。看好题意;

#include<bits/stdc++.h>
using namespace std;
//849 Dijkstra 1
const int N=510,M=1e5+10;
typedef pair<int,int>PII;
int dis[N];
int e[N],ne[N],h[N],w[N],idx=0,st[N];
int n,m;
void add(int x,int y,int c)
{e[idx]=y;w[idx]=c;ne[idx]=h[x];h[x]=idx++;
}void Dijkstra()
{priority_queue<PII,vector<PII>,greater<PII>>q;q.push({0,1});dis[1]=0;while(q.size()){auto t=q.top();q.pop();int dist=t.first;int p=t.second;for(int i=h[p];i!=-1;i=ne[i]){int u=e[i];if(st[i])continue;st[i]=1;if(dis[u]>dist+w[i]){dis[u]=dist+w[i];q.push({dis[u],u});}}}}
int main()
{memset(h,-1,sizeof(h));memset(dis,0x3f,sizeof(dis));cin>>n>>m;while(m--){int x,y,c;cin>>x>>y>>c;add(x,y,c);add(y,x,c);}Dijkstra();cout<<dis[n]<<endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/768617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主干网络篇 | YOLOv8更换主干网络之MobileNetV3

前言:Hello大家好,我是小哥谈。MobileNetV3是一种轻量级的卷积神经网络架构,用于图像分类和目标检测任务。它是MobileNet系列的第三个版本,旨在在保持高准确性的同时减少模型的计算量和参数数量。MobileNetV3引入了一些新的设计思想和技术,以提高模型的性能。其中一项重要…

【微服务】Gateway服务网关

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;微服务 ⛺️稳中求进&#xff0c;晒太阳 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响…

Windows 7 静态 IP 地址

Windows 7 静态 IP 地址 References 静态 IP 地址设置为 192.168.1.198 控制面板 -> 查看网络状态和任务 更改适配器设置 网络连接 -> 属性 TCP / IPv4 警告 - 已计划将多个默认网关用于提供单一网络 (例如 intranet 或者 Internet) 的冗余。 6.1. 关闭 redundancy VMw…

QT GUI常用函数介绍

在 Qt GUI 模块中&#xff0c;有许多常用的函数用于处理图形用户界面相关的操作。以下是一些常用的 Qt GUI 函数介绍&#xff1a; QWidget 类函数&#xff1a; setWindowTitle(const QString &title)&#xff1a;设置窗口的标题。resize(int w, int h)&#xff1a;设置窗口…

个人博客系列-后端项目-系统角色配置(8)

系统角色配置需要设置的接口 用户可以绑定多个角色&#xff0c;角色对应有多个路由权限。用户绑定角色后&#xff0c;可以访问当前角色下的各个api路由和菜单路由。 用户注册时设置用户角色修改用户角色&#xff08;同时对应用户可以访问的路由将会同步变更&#xff09;添加修…

类模板与函数模板区别

一、类模板 类模板作用&#xff1a; 建立一个通用类&#xff0c;类中的成员 数据类型可以不具体制定&#xff0c;用一个虚拟的类型来代表。 语法&#xff1a; template<typename T> 类 template --- 声明创建模板 typename --- 表面其后面的符号是一种数据类型&…

【Linux】写个日志和再谈线程池

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;信号量和线程池 目录 &#x1f449;&#x1f3fb;日志代码Log.cppMain.cc &#x1f449;&#x1f3fb;线程池代码LockGuard.hpp(自定义互斥锁&#xff0c;进…

webpack原理之-打包流程热更新HMR

webpack打包流程&#xff1f; 1. 初始化: 启动构建&#xff0c;读取与合并配置参数&#xff0c;加载Plugin&#xff0c;实例化Compiler&#xff1b; 2. 编译: 从 entry出发&#xff0c;针对每个 Module 串行调用对应的 loader 去翻译文件的内容&#xff0c;再找到该 Module 依赖…

Spring Boot集成zxing实现生成二维码功能

1.二维码介绍 二维码QR Code(Quick Response Code) 由Denso公司于1994年9月研制的一种矩阵二维码符号&#xff0c;它具有一维条码及其它二维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。 ZXing 一个支持在图像中解码和生成条形码(如…

【python】(10)理解Python中的数据聚合和分组运算

系列文章回顾 【python】(01)初识装饰器Decorator 【python】(02)初识迭代器Iterator 【python】(03)初识生成器Generator 【python】(04)python中实现多任务并发和并行的区别 【python】(05)如何使用python中的logging模块记录日志信息 【python】(06)理解Python中的 lambda 、…

数学是赋予不同事物相同名字的艺术

“数学是赋予不同事物相同名字的艺术。”~亨利庞加莱 ”数学是赋予不同事物相同名字的艺术“反映了数学在对事物进行抽象和概括时的重要性。数学的一个重要作用就是为不同的现象或实体找到相同的模式、结构或规律&#xff0c;并用统一的数学语言来描述它们。通过这种方式&#…

关于C/C++,Linux/MacOS/Windows 平台虚拟内存分配

在 Windows 平台上面建议通过 VirtualAlloca、VirtualAllocaEx 核心库函数来分配虚拟内存&#xff0c;而不是通过 MMF&#xff08;Memory Mapping File / 内存映射文件&#xff09;技术来载入虚拟内存。 这是因为&#xff0c;在 Windows 平台上面&#xff0c;通过MMF技术分配的…

【Web】NKCTF 2024 个人wp(部分)

目录 my first cms 全世界最简单的CTF attack_tacooooo 属实太菜了&#xff0c;3/4 my first cms 一眼搜版本2.2.19 CVE -CVE-2024-27622 GitHub - capture0x/CMSMadeSimple 访问/admin/login.php 爆出弱口令&#xff0c;后台登录 admin Admin123 Extensions > User D…

鸿蒙实战开发-使用关系型数据库实现对账单的增、删、改、查

介绍 本Codelab以记账为例&#xff0c;使用关系型数据库的相关接口实现了对账单的增、删、改、查操作。实现效果如图所示&#xff1a; 相关概念 关系型数据库&#xff1a;基于关系模型来管理数据的数据库&#xff0c;提供了增、删、改、查等接口&#xff0c;也可运行输入的SQ…

Mac电脑高清媒体播放器:Movist Pro for mac下载

Movist Pro for mac是一款专为Mac操作系统设计的高清媒体播放器&#xff0c;支持多种常见的媒体格式&#xff0c;包括MKV、AVI、MP4等&#xff0c;能够流畅播放高清视频和音频文件。Movist Pro具有强大的解码能力和优化的渲染引擎&#xff0c;让您享受到更清晰、更流畅的观影体…

Matlab|【免费】基于数据驱动的模型预测控制电力系统机组组合优化

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现文章《Feature-Driven Economic Improvement for Network-Constrained Unit Commitment: A Closed-Loop Predict-and-Optimize Framework》&#xff0c;程序主要做的是一个基于数据驱动的电力系统机…

51单片机学习笔记——LED闪烁和流水灯

任务分析 首先要知道LED闪烁主要是怎么工作的&#xff0c;闪烁亮灭自然是一下为高一下为低&#xff0c;亮灭的频率则需要延时来进行控制。 上节已经知道了如何点亮那延时如何做呢首先先编写主框架 这样是否可以通过循环将LED灯一直循环闪烁。 以为while一直在循环所以其实是可…

[Java基础揉碎]final关键字

目录 介绍 在某些情况下&#xff0c;程序员可能有以下需求&#xff0c;就会使用到final final注意事项和讨论细节 1) final修饰的属性又叫常量&#xff0c;一般用XX_XX_XX来命名 2) final修饰的属性在定义时&#xff0c;必须赋初值&#xff0c;并且以后不能再修改&#…

【Android 内存优化】Koom核心内存指标分析

文章目录 源码Runtime.getRuntime()/proc/self/status/proc/meminfo 附总结 获取内存的指标有很多&#xff0c;假如我们要写一个用于监控APP内存泄漏的框架的话&#xff0c;主要获取哪些指标呢&#xff1f; 这篇文章来研究下KOOM里面获取到是哪些指标。 下面正文开始&#xff…

Spring Cloud五:Spring Cloud与持续集成/持续部署(CI/CD)

Spring Cloud一&#xff1a;Spring Cloud 简介 Spring Cloud二&#xff1a;核心组件解析 Spring Cloud三&#xff1a;API网关深入探索与实战应用 Spring Cloud四&#xff1a;微服务治理与安全 文章目录 一、Spring Cloud在CI/CD中的角色1. 服务注册与发现&#xff1a;自动化管理…