2.18总结

这两天在加强对最短路径的学习,除了Floyed比较简单之外,dijkstra、bell-mandford和SPFA学起来感觉有些难,洛谷上的模板题卡了半天都没写出来,最后只能通过看题解来帮助自己完成。

SPFA

算法实现:

最短路径算法对比比较:

Floyed:时间复杂度O(N^3),适用于稠密图(和顶点关系密切),可以解决负权和处理负权边,

但是不能判定是否存在负权回路

Dijkstra:时间复杂度O((M+N)logN),适用于稠密图(和顶点关系密切),不可以解决负权,不能处理负权边,

不能判定是否存在负权回路

Bell-manford:时间复杂度O(NM),适用于稀疏图(和边关系密切),可以解决负权和处理负权边,可以判定

是否存在负权回路

SPFA(队列优化的Bell-manford算法):时间复杂度O(NM)(最坏情况下),可以解决负权和处理负权边,

可以判定是否存在负权回路

一般情况下时间复杂度:Floyed>Dijkstra>Bell-manford>SPFA

P3371 【模板】单源最短路径(弱化版) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

P3371 【模板】单源最短路径(弱化版)

题目背景

本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779。

题目描述

如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。

输入格式

第一行包含三个整数 n,m,s,分别表示点的个数、有向边的个数、出发点的编号。

接下来 m 行每行包含三个整数 u,v,w,表示一条 u→v 的,长度为 w 的边。

输出格式

输出一行 n 个整数,第 i 个表示 s 到第 i 个点的最短路径,若不能到达则输出 2^31−1。

输入输出样例

输入 

4 6 1
1 2 2
2 3 2
2 4 1
1 3 5
3 4 3
1 4 4

输出 

0 2 4 3

说明/提示

【数据范围】
对于 20% 的数据:1≤n≤5,1≤m≤15;
对于 40% 的数据:1≤n≤100,1≤m≤10^4;
对于 70% 的数据:1≤n≤1000,1≤m≤10^5;
对于 100% 的数据:1≤n≤10^4,1≤m≤5×10^5,1≤u,v≤n,w≥0,∑w<2^31,保证数据随机。

Update 2022/07/29:两个点之间可能有多条边,敬请注意。

对于真正 100%100% 的数据,请移步 P4779icon-default.png?t=N7T8https://www.luogu.org/problemnew/show/P4779。请注意,该题与本题数据范围略有不同。

样例说明:

图片1到3和1到4的文字位置调换

对于这道题刚开始想用Floyed,发现怎么也过不了,后来转用Dijkstra,对于这个算法的使用也不是很会,只能套模板,搞了半天最后只好去看题解了

代码:

#include<bits/stdc++.h>
#include<iostream>
#include<math.h>
using namespace std;
const int inf=pow(2,31)-1;
int n , m , s ;
struct edge
{
    int  v , w;
};
vector<edge> e[500005];
int  dis[100005] , pre[100005] ;
bool vis[100005] ;
int main()
{
    cin>>n>>m>>s;
    for(int i=0;i<=n;i++)
        dis[i]=inf,vis[i]=false;
    dis[s]=0;
    for(int i=0;i<m;i++)
    {
        int u , v , w ;
        cin>>u>>v>>w;
        e[u].push_back({v,w});
    }
   for(int i=1;i<=n;i++){
        int min_dis=inf , min_i=s;
        for(int j=1;j<=n;j++){
            if(vis[j]==0 && min_dis>dis[j]){
                min_dis=dis[j];
                min_i=j;
            }
        }
        vis[min_i]=true; 
        for(int j=0;j<e[min_i].size();j++){
        
            int y = e[min_i][j].v;
            int d = e[min_i][j].w;
            dis[y] = min(dis[y], dis[min_i] + d);
        }
    }
    for(int i=1;i<=n;i++)
        cout<<dis[i]<<" ";
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式学习 C++ Day5、6

嵌入式学习 C Day5、6 一、思维导图 二、作业 1.以下是一个简单的比喻&#xff0c;将多态概念与生活中的实际情况相联系&#xff1a; 比喻&#xff1a;动物园的讲解员和动物表演 想象一下你去了一家动物园&#xff0c;看到了许多不同种类的动物&#xff0c;如狮子、大象、猴…

驶向未来:3D可视化模型重塑我们的道路认知

在科技的浪潮中&#xff0c;每一个革新都是对人类未来生活的深度洞察。而今&#xff0c;当可视化这一技术走进我们的视野&#xff0c;它不仅是一场视觉盛宴&#xff0c;更是一次对未来出行方式的全新探索。 一、从平面到立体&#xff0c;解锁道路新视角 你是否曾站在十字路口&…

[Flink04] Flink部署实践

Flink部署支持三种模式&#xff1a;本地部署、Standalone部署、Flink on Yarn部署。 独立&#xff08;Standalone&#xff09;模式由Flink自身提供资源&#xff0c;无需其他框架&#xff0c;这种方式降低了和其他第三方资源框架的耦合性&#xff0c;独立性非常强。但Flink 是大…

老兵(11)

百度文心一格&#xff0c;大约是一年前上线并免费向用户开放的。其实也不是免费&#xff0c;而是“电量”比较好获得&#xff0c;白送的就16/每天&#xff0c;如果只是好奇玩玩的话也算够吧。 当时就很开心&#xff0c;因为一直想着把一些文案图像化&#xff0c;做成漫画的形式…

【教程】Linux使用aria2c多线程满速下载

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 安装aria2c&#xff1a; sudo apt-get install aria2多线程下载&#xff1a; aria2c -x 16 -s 16 <url> 比如&#xff1a; aria2c -x 16 -s 16 http://images.cocodataset.org/zips/test2017.zip

轨道交通信号增强与覆盖解决方案——经济高效,灵活应用于各类轨道交通场景!

方案背景 我国是世界上轨道交通里程最长的国家&#xff0c;轨道交通也为我们的日常出行带来极大的便利。伴随着无线通信技术的快速发展将我们带入电子时代&#xff0c;出行的过程中对无线通信的依赖程度越来越高&#xff0c;无论是车站还是车内都需要强大、高质量的解决方案以…

【JavaEE】_HTTP响应

目录 1. 首行 2. 报头header 3.空行 4. 正文body 1. 首行 响应首行&#xff1a;版本号状态码状态码描述&#xff1b; HTTP状态码描述了这次响应的结果&#xff08;比如成功、失败&#xff0c;以及失败原因等&#xff09;&#xff1b; 1. HTTP状态码有&#xff1a; &#…

三种vcruntime140.dll丢失解决方法,有效解决vcruntime140.dll文件丢失

vcruntime140.dll作为一个动态链接库文件&#xff0c;具有重要的功能和用途。它是由Microsoft Visual C Redistributable软件包提供的一个重要组件&#xff0c;用于支持运行在Windows操作系统上的应当vcruntime140.dll文件丢失时&#xff0c;将会对计算机系统产生一系列的影响。…

CVE-2022-24652 漏洞复现

CVE-2022-24652 开题 后台管理是thinkphp的&#xff0c;但是工具没检测出漏洞。 登陆后界面如下&#xff0c;上传头像功能值得引起注意 这其实就是CVE-2022-24652&#xff0c;危险类型文件的不加限制上传&#xff0c;是文件上传漏洞。漏洞路由/user/upload/upload 参考文章&a…

如何减少 HTTP 响应的数据大小

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 如何减少 HTTP 响应的数据大小? 对于 HTTP 的请求和响应&#xff0c;通常 HTTP 的响应的数据大小会比较大&#xff0c;也就是服务器返回的资源会比较大。 于是&#xff0c;我们可以考虑对响应的资源进…

【蓝桥杯】算法模板题(Floyd算法)

一.弗洛伊德算法 用途&#xff1a;用来求解多源点最短路径问题。 思想&#xff1a;Floyd算法又称为插点法&#xff0c;是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法。 主要步骤&#xff1a; 1&#xff09;初始化&#xff1a;使用邻接矩阵初始化dis…

并发CPU伪共享及优化

目录 伪共享 解决 伪共享 缓存系统中是以缓存行&#xff08;cache line&#xff09;为单位存储的。缓存行是2的整数幂个连续字节&#xff0c;一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时&#xff0c;如果这些变量共享同一个缓存行&am…

代码随想录算法训练营第十六天 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

代码随想录算法训练营第十六天 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树 文章目录 代码随想录算法训练营第十六天 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树1 LeetCode 654.最大二叉树2 LeetCode 61…

04_device_bus_driverLinux内核模块

01_basicLinux内核模块-CSDN博客文章浏览阅读45次。环境IDubuntuMakefilemodules:clean:basic.creturn 0;运行效果。https://blog.csdn.net/m0_37132481/article/details/136157384?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%…

c高级 函数+Makefile

一、作业 1.写一个函数&#xff0c;输出当前用户的uid和gid&#xff0c;并使用变量接收结果 #!/bin/bash function fun(){retid -uret1id -gecho $ret $ret1 } retfun echo $ret二、练习回顾 1.分文件编译&#xff08;实现冒泡排序&#xff09; 正确的&#xff1a;将数组的…

<网络安全>《35 网络攻防专业课<第一课 - 网络攻防准备>》

1 主要内容 认识黑客 认识端口 常见术语与命令 网络攻击流程 VMWare虚拟环境靶机搭建 2 认识黑客 2.1 白帽、灰帽和黑帽黑客 白帽黑客是指有能力破坏电脑安全但不具恶意目的黑客。 灰帽黑客是指对于伦理和法律态度不明的黑客。 黑帽黑客经常用于区别于一般&#xff08;正面…

【性能测试】分布式压测之locust和Jmeter的使用

受限于单台机器的配置问题&#xff0c;我们在单台机器上达不到一个很高的压测并发数&#xff0c;那这个时候就需要引入分布式压测 分布式压测原理&#xff1a; 一般通过局域网把不同测试计算机链接到一起&#xff0c;达到测试共享、分散操作、集中管理的目的。 选择一台作为…

二叉树(4)——链式二叉树

1 二叉树的概念 二叉树是&#xff1a; 空树非空&#xff1a;根节点&#xff0c;根节点的左子树、根节点的右子树组成的。 二叉树定义是递归式的&#xff0c;因此后序基本操作中基本都是按照该概念实现的。 2 二叉树的遍历 2.1 前序、中序以及后序遍历 学习二叉树结构&#xf…

单片机学习笔记---AD模数转换DA数模转换

目录 AD模数转换 XPT2046.c XPT2046.h main.c DA数模转换 main.c 上一篇博客讲了AD/DA转换的工作原理&#xff0c;也介绍了运算放大器的工作原理&#xff0c;这节开始代码演示&#xff01; AD模数转换 新创建一个工程&#xff1a;AD模数转换 第一个工程将用到LCD1602和…

Day20 -- learning english

一、积累 1.gulp 2.clog 3.artery 4.bloat 5.kidnap 6.groom 7.prey 8.cargo 9. jerk 10.treadmill 11.shatter 12. acrobatic 13. aggravate 14.moldy 15.curl 16.manual 17.slay 18.sibling 19.hatch 20.dense 二、练习 1.牛津原译 Gulp /ɡʌlp 1.~ sth (down)to swallow …