【模板】【图论】最短路

软件工程案例教程·韩万江【课后习题】 !!!! 阅读详情

最近打算整理一下noip范围内的各种板子,就从最短路开始吧。
因为是给自己看的所以没加注释233

Dijkstra:

#include <algorithm>
#include <cstdio>
#include <queue>
using namespace std;
const int mxn =10003,mxm =500003,inf=0x7fffffff;
struct Edge{
    int nx,to,val;
}e[mxm];
struct Node{
    int d,u;
    bool operator < (const Node &x) const{
        return x.d<d;
    }
};
int hd[mxn];
int vis[mxn];
int dis[mxn];
int n,m,s,ecnt;
inline void add_edge(int u,int v,int w)
{
    e[++ecnt].nx=hd[u];
    hd[u]=ecnt;
    e[ecnt].to=v;
    e[ecnt].val=w;
}
void Dijkstra(int s)
{
    priority_queue<Node>q;
    for(int i=1;i<=n;i++) dis[i]=inf;
    dis[s]=0;
    q.push((Node){0,s});
    while(!q.empty())
    {
        Node x=q.top();q.pop();
        int u=x.u;
        if(vis[u]) continue;
        vis[u]=true;
        for(int i=hd[u];i;i=e[i].nx)
        {
            int v=e[i].to;
            if(dis[v]>dis[u]+e[i].val)
            {
                dis[v]=dis[u]+e[i].val;
                q.push((Node){dis[v],v});
            }
        }
    }
}
int main()
{
    scanf("%d%d%d",&n,&m,&s);
    for(int i=1;i<=m;i++)
    {
        int u,v,w;
        scanf("%d%d%d",&u,&v,&w);
        add_edge(u,v,w);
    }
    Dijkstra(s);
    for(int i=1;i<=n;i++) printf("%d ",dis[i]);
    printf("\n");
    return 0;
}

SPFA:

#include <algorithm>
#include <cstdio>
#include <queue>
using namespace std;
const int mxn =10003,mxm =500003,inf=0x7fffffff;
struct Edge{
    int nx,to,val;
}e[mxm];
int hd[mxn];
int inq[mxn];
int dis[mxn];
int n,m,s,ecnt;
inline void add_edge(int u,int v,int w)
{
    e[++ecnt].nx=hd[u];
    hd[u]=ecnt;
    e[ecnt].to=v;
    e[ecnt].val=w;
}
void spfa(int s)
{
    queue<int>q;
    for(int i=1;i<=n;i++) dis[i]=inf;
    dis[s]=0;
    q.push(s);
    inq[s]=true;
    while(!q.empty())
    {
        int u=q.front();q.pop();
        inq[u]=false;
        for(int i=hd[u];i;i=e[i].nx)
        {
            int v=e[i].to;
            if(dis[v]>dis[u]+e[i].val)
            {
                dis[v]=dis[u]+e[i].val;
                if(!inq[v])
                {
                    q.push(v);
                    inq[v]=true;
                }
            }
        }
    }
}
int main()
{
    scanf("%d%d%d",&n,&m,&s);
    for(int i=1;i<=m;i++)
    {
        int u,v,w;
        scanf("%d%d%d",&u,&v,&w);
        add_edge(u,v,w);
    }
    spfa(s);
    for(int i=1;i<=n;i++) printf("%d ",dis[i]);
    printf("\n");
    return 0;
}

Floyed:

#include <cstdio>
#include <algorithm>
using namespace std;
const int mxn =103,inf=0x7fffffff;
int g[mxn][mxn];
int n,m,s;
int main()
{
    scanf("%d%d%d",&n,&m,&s);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            g[i][j]=inf;
    for(int i=1;i<=m;i++)
    {
        int u,v,w;
        scanf("%d%d%d",&u,&v,&w);
        g[u][v]=min(g[u][v],w);
    }
    for(int k=1;k<=n;k++)
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++) if(g[i][k]!=inf&&g[k][j]!=inf)
                g[i][j]=min(g[i][j],g[i][k]+g[k][j]);
    for(int i=1;i<=n;i++) g[i][i]=0;
    for(int i=1;i<=n;i++) printf("%d ",g[s][i]);
    printf("\n");
    return 0;
}

后记:这样的博客还真是简单粗暴又好写- -

C# 调用高德地图关键词 API 今天我们要一起探索如何使用 C# 来调用高德地图的关键词搜索 API,从而实现精准的地理位置搜索功能。高德地图的关键词搜索 API 可以帮助我们轻松地实现这一点,它能够返回一系列匹配关键词的地点坐标和其他相关信息。通过简单的几行 C# 代码,我们就实现了调用高德地图关键词搜索 API 的功能。接下来,我们将在一个 C# 控制台应用中实现调用高德地图关键词搜索 API 的功能。此外,如果要在生产环境中使用,还需要考虑安全性问题,例如不要在客户端暴露 API 密钥。🔥关注墨瑾轩,带你探索编程的奥秘! 阅读详情

相关推荐

UE5新手必看:Gameplay框架中的GameInstance与子系统实战指南(含蓝图配置)

本文为UE5新手提供了Gameplay框架中GameInstance与子系统的实战指南。文章深入解析了GameInstance作为全局数据中枢的核心作用与生命周期,并手把手演示了如何创建自定义GameInstance、构建模块化的子系统(如存档管理),以实现跨关卡的持久数据管理。指南旨在帮助开发者构建清晰、可维护的项目架构,解决数据管理混乱的常见痛点。

weixin_29015801的博客 574

图论最短路算法模板

目录最短路算法floydbellman-forddijkstra 最短路算法 floyd 时间复杂度: O(V3) 适用范围: 适用数据量小的题目,程序简单,可求出所有结点间的最短路径,适用带负边权的图,如果存在G[i][i]为负数,则存在负环。 基本思路: 逐个加入节点作为中转点,更新起点到所有点的最短路。 模板: //第一行输入n, m, 后m行输入u, v, w, 求第一个结点到第n个结点距离。(无向图) #include <bits/stdc++.h> using namespace s

ZHurric的博客 343

[ensp报错:USG6000V错误代码45解决方案]

[ensp报错:USG6000V:错误代码45解决] [ensp报错:USG6000V:错误代码45解决] 第一种处理方式: ensp的45错误帮助文档里的解决方法:(这里就不说了,上华为爸爸的图) ensp的45错误:如果你的45错误不是描述的那个,可能是ensp与virtualbox不兼容了。 错误描述:具体表现为在virtualbox里没有vfw_usg的条目,虚拟介质管理器里也没有相应的条目: 就是vfw_usg_vdi这个 这种情况下你把ensp卸载重装多少次都没用,原因在两个软件的兼容

weixin_45456536的博客 3万+

图论01.最短路专题_学习笔记+模板

图论01.最短路专题_学习笔记+模板 一、定义与性质 ● 需要的前导知识点 路径 最短路 有向图中的最短路、无向图中的最短路 单源最短路、每对结点之间的最短路 ● 最短路的性质 对于边权为正的图,任意两个结点之间的最短路,不会经过重复的结点。 对于边权为正的图,任意两个结点之间的最短路,不会经过重复的边。 对于边权为正的图,任意两个结点之间的最短路,任意一条的结点数不会超过 nnn ,边数不会超过 n−1n-1n−1 。 二、最短路算法与模板 1.Floyd–适用于无负环图的最短路算法 用于求解图中任

HeartFireY的博客 2425

Java SSH框架学习

Java SSH框架学习

私信可回答各种问题~ 1789

在isaacsim仿真系统进行遥操作(设备是quest3):怎么让遥操作设备(quest3)在Isaac sim系统中控制机械臂并把其中的参数传输出来??

我长期专注 Python 爬虫工程化实战,主理专栏 👉 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

**My Coding Family** 937

图论最短路模板

图论最短路模板

jsxhnzl的博客 155

车载 ECU 中的 Safety Linux 详解

车载 ECU 中的 Safety Linux 详解

天赐好车的博客 307

图论最短路模板总结

图论最短路模板合集,含Floyd,Dijkastra,SPFA,链式前向星

c_yy_的博客 579

YOLOv11缝合改进Conv | SAConv在YOLOv11中的应用可切换空洞卷积与性能提升(附代码)

在本篇文章中,我们将深入探讨如何通过引入**SAConv**(Switchable Atrous Convolution,可切换空洞卷积)来优化YOLOv11网络结构,特别是在卷积操作方面的创新。我们会解析SAConv的核心原理和架构设计。

一键难忘的博客 949

FANUC机器人有关动作速度倍率的相关系统变量-解释说明

FANUC机器人有关动作速度倍率的相关系统变量-解释说明 1.$SHFTOV_ENB 默认值:0 名称:位移倍率的有效/无效 含义:位移倍率功能,通过按住SHIFT键的同时按下倍率键,将速度倍率更改为5档 设定值:有效1; 无效0. 有SHFIT键:微速–低速–5%–50%–100% 2.MCRGRP[GROUP].MCR_GRP[GROUP].MCRG​RP[GROUP].PRGOVERRIDE 默认值:100 名称:程序倍率 含义:设定程序再生时的、机器人动作速度比率 设定值:0~100(%) 3.S

Robot_PLC_HMI_Automation 9319

图论之最短路算法模板总结

注意:有负权的可能没有最短路,我们最外面循环了k次,他的含义是最多经过k条边的最短路,因此若循环超过该次数说明有环,这样子就是有负环了,但是有负环不一定说明答案不存在比方说一个与答案路径无关的负环,因此一般无法用该算法判断。同时维护cnt[x]表示当前最短路的边数,我们cnt[x]=cnt[t]+1,若有cnt[x]>=n,说明有了负环。我们让s表示当前已经确定的最短距离的点,我们找到一个不在s中的距离最近的点t,并用t来更新其他的点。实现:循环n次,每一次循环所有边并更新。

cocoack的博客 1198

metahuman 下载材质 脸部灰白 脸部过亮

metahuman 下载材质 脸部灰白 脸部过亮

jacke121的专栏 243

图论 <最短路问题>模板

2.邻接表 (常用)单链表,每一个点都有一个单链表 ,插入一般在头的地方插,特殊的深度优先搜索,难点是如何实现,一条道走到黑。例题 :有向图的拓扑序列。1.邻接矩阵,稠密图。图的邻接表的存储方式。

Marshuo的博客 1661

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

图论之最短路问题(acwing模板篇)

acwing(6)

lihua777的博客 1074

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

图论基础--最短路模板

题目选自ACwing Dijkstra最短路: 给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为正值。 请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。 输入格式 第一行包含整数n和m。 接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。 输出格式 输出一个整数,表示1号点到n号点的最短距离。 如果路径不存在,则输出-1。...

qq_44196094的博客 248

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【算法模板】图论单源|多源最短路

图论算法模板 图论 【模板】dirjkstra单源最短路径 【模板】Bellman-Ford多源最短路 【模板】Spfa求最短路 【模板】Spfa判断负环 【模板】Floya 【模板】Kruskal最小生成树

向往有那么一天梦幻的步态识别落地,开花❀! 1074

最短路图论模板

单源最短路dij O((E+N)logN)O((E+N)logN)O((E+N)logN) int n,m; int dis[N]; int vis[N]; struct node { int to,v; bool operator &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt; (const node &amp;amp;amp;amp;amp;amp;amp;amp;amp;a

wyxxzsy的博客 235

模板 - 图论 - 单源最短路

第一次用Markdown编辑器写博文呢。 单源最短路的模板,链式前向星写法。 非负权的单源最短路Dijkstra算法。 Dijkstra #include<bits/stdc++.h> using namespace std; const int INF=0x3f3f3f3f; /* begin 链式前向星 */ const int MAXN=1000010; const int...

weixin_30376453的博客 107

图论模板(最短路、tarjan)

图论模板

Galaxy_Su的博客 504

图论最短路(模板/模板题)

我们目标是从1到5的最短路但是可以发现从2——>3——>4——>2这个环上总和是一个负数每多走一圈距离就变短一次所以这个1——5的最短路为-∞那么怎么判断呢 根据抽屉原理可以得知n个点里任意两个点的任意路程如果不经过重复的点那么边的个数一定小于n 那么可以根据此方法来判断负环 维护一个cnt数组表示从起点到当前点的最短路的边 只要出现一个cnt[i]>n就一定有负环出现值得注意的是 负环不一定从1点可以到达 所以我们要把所有的点都当作起点枚举一下寻找。...

zero_one_fa的博客 508

【洛谷】图论 图论最短路算法全解:从单源 Dijkstra 到多源 Floyd 模板与实战

本文系统梳理图论中两类核心最短路问题:单源最短路与多源最短路。详细讲解基于贪心思想的 Dijkstra 算法(含常规版与堆优化版),以及基于动态规划的 Floyd 插点法,包含算法原理、状态转移、代码实现与边界处理,并提供竞赛模板,帮助读者快速掌握最短路问题的求解思路与工程实现。

2501_90265152的博客 1421

【刷题】图论——最短路:Dijkstra【证明+模板】

文章目录单源最短路边权为正1.1、朴素Dijkstra O(n^2)算法步骤算法证明1.2、堆优化Dijkstra O(mlogn)边权为负2.1、Bellman-Ford O(nm)2.2、SPFA 一般O(m)、最坏O(nm)多源最短路3 Floyd O(n^3) 定义图有:n个点,m条边 单源最短路 边权为正 1.1、朴素Dijkstra O(n^2) 算法步骤 假设起点是st;已经确定到st最短距离的点在集合S中 dis[s]=0,(i≠s)dis[i]=+∞dis[s] = 0, (i\neq

qq_42581685的博客 2093

图论模板-最短路

(1)floyd *时间复杂度O(n^3); *最简单最好记最好打的最短路算法; *可计算任意两点间的最短路; *适合带负权的情况; int dis[10010][10010]; int main() { int n,m,x,y,len; scanf("%d%d",&n,&m); memset(dis,0xffffffff,sizeof(dis)); for (int i=1;

zero_from的博客 353

图论_单源最短路模板

图论

InsiApple的博客 7685
上一篇: 洛谷【P2831】愤怒的小鸟 (NOIP 2016 D2T3)
下一篇: 洛谷【P1725】琪露诺 DP的优化
HFYRKG
博客等级 码龄9年 19粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值