洛谷 P4779 [模板] 单源最短路径 题解 dijkstra算法

洛谷【模板】单源最短路径(超详细版) 本文介绍了单源最短路径问题的两种解法:普通Dijkstra算法和堆优化Dijkstra算法。作者首先通过P3371模板题展示了普通Dijkstra的实现方法,指出其时间复杂度为O(n²)会导致在较难题目中TLE。接着以P4779为例,引入优先队列进行堆优化,将时间复杂度降至O(mlogn)。文章包含详细代码实现,并对比了最小生成树Prim算法与最短路算法的异同。最后推荐了相关练习题,帮助读者巩固所学知识。 阅读详情

【模板】单源最短路径(标准版)

题目描述

给定一个 n n n 个点, m m m 条有向边的带非负权图,请你计算从 s s s 出发,到每个点的距离。

数据保证你能从 s s s 出发到任意点。

输入格式

第一行为三个正整数 n , m , s n, m, s n,m,s。
第二行起 m m m 行,每行三个非负整数 u i , v i , w i u_i, v_i, w_i ui​,vi​,wi​,表示从 u i u_i ui​ 到 v i v_i vi​ 有一条权值为 w i w_i wi​ 的有向边。

输出格式

输出一行 n n n 个空格分隔的非负整数,表示 s s s 到每个点的距离。

样例 #1

样例输入 #1

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

样例输出 #1

0 2 4 3

提示

1 ≤ n ≤ 1 0 5 1 \leq n \leq 10^5 1≤n≤105;

1 ≤ m ≤ 2 × 1 0 5 1 \leq m \leq 2\times 10^5 1≤m≤2×105;

s = 1 s = 1 s=1;

1 ≤ u i , v i ≤ n 1 \leq u_i, v_i\leq n 1≤ui​,vi​≤n;

0 ≤ w i ≤ 1 0 9 0 \leq w_i \leq 10 ^ 9 0≤wi​≤109,

0 ≤ ∑ w i ≤ 1 0 9 0 \leq \sum w_i \leq 10 ^ 9 0≤∑wi​≤109。

原题

洛谷P4779——传送门

代码

#include <bits/stdc++.h>
using namespace std;
#define max_Heap(x) priority_queue<x, vector<x>, less<x>>
#define min_Heap(x) priority_queue<x, vector<x>, greater<x>>
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
typedef pair<long long, long long> PLL;
const double PI = acos(-1);

const int maxn = 1e5 + 6;
const int maxm = 5e5 + 6;

struct edge
{
    int to, len; // to为边的指向,len为边的长度即边权
};

vector<edge> e[maxn]; // 存储以点i为起点的边

struct node
{
    ll dis;                             // dis为目前到该点的最短路长度
    int num;                            // num为该点序号
    bool operator>(const node &a) const // 小根堆中的大于号重载
    {
        return dis > a.dis;
    }
};

ll minDis[maxn];                                      // 从起点到第i个点的最短路长度
bool vis[maxn];                                       // 第i个点是否已确定最短路长度
priority_queue<node, vector<node>, greater<node>> pq; // 还未确定最短路长度的点存放在小根堆中

void dijkstra(int n, int s) // n为点的个数,s为起点
{
    memset(minDis, 0x3f, sizeof(minDis)); // 将最短路距离初始化为无穷大
    minDis[s] = 0;                        // 起点到起点的最短路长度为0
    pq.push({0, s});
    while (!pq.empty())
    {
        int u = pq.top().num; // 有向边的起点
        pq.pop();
        if (vis[u]) // 若该点已确定最短路长度,跳过
            continue;
        vis[u] = 1;
        for (edge eg : e[u]) // 遍历以该点为起点的所有有向边
        {
            int v = eg.to;
            int w = eg.len;
            if (minDis[v] > minDis[u] + w) // 更新最短路长度
            {
                minDis[v] = minDis[u] + w;
                pq.push({minDis[v], v});
            }
        }
    }
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int n, m, s; // 点的个数,有向边的个数,出发点的编号
    cin >> n >> m >> s;
    int u, v, w; // 从u到v的权值为w的有向边
    while (m--)
    {
        cin >> u >> v >> w;
        e[u].push_back({v, w});
    }
    dijkstra(n, s);
    for (int i = 1; i <= n; i++)
    {
        if (i != n)
            cout << minDis[i] << ' ';
        else
            cout << minDis[i] << '\n';
    }

    return 0;
}
题解:洛谷 P4779 【模板】单源最短路径(标准版) 等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。《洛谷 P4779 单源最短路径(标准版)》 #图论# #优先队列# #最短路# #模板题#条有向边的带非负权图,请你计算从。个空格分隔的非负整数,表示。出发,到每个点的距离。行,每行三个非负整数。本文分享的必刷题目是从。 阅读详情

相关推荐

HMC5883L磁力计在STM32F4上的I2C驱动与数据校准实战

本文详细介绍了HMC5883L磁力计在STM32F4平台上的I2C驱动开发与数据校准实战。通过解析寄存器配置、数据读取处理和椭圆拟合校准算法,帮助开发者实现精准的地磁测量,特别适用于无人机导航和机器人系统中的航向确定与陀螺仪漂移修正。

2y3u4i5o6p的博客 1037

P4779 【模板】单源最短路径(标准版)

P4779 【模板】单源最短路径(标准版)

m0_64045085的博客 873

html2canvas 返回的toDataURL()数据为 data:,的解决方法

html2canvas 返回的toDataURL()数据为 data:,的解决方法 我在使用html2canvas的使用, 发现toDataURL() 返回的数据为data:, 而且将数据设置为img的src属性,图片也不能正常显示,我尝试了很多方法,也没有解决出来,经过我不断的百度+自己尝试,终于解决了这个问题。 代码: 这段代码是没有任何问题的,标准html2canvas的demod代码,但就是无法正常将图片previewImg 渲染出来,dataURL 我打印的结果为 data:, 错误的原因是,

java123_PB的博客 5025

【模板】单源最短路径(标准版)(P4779)

【代码】【模板】单源最短路径(标准版)(P4779)

GordrnGhost的博客 327

ROS2学习笔记(二)-- 多机通讯原理简介及配置方法

简单介绍ROS2多机通信原理以及配置注意事项

aibingjin的博客 1万+

Ansys Circuit新手必看:IBIS模型导入时,Pin Import和Buffer Import到底怎么选?

本文详细解析了Ansys Circuit中IBIS模型导入时Pin Import与Buffer Import的选择策略,帮助SI/PI工程师根据仿真需求做出正确决策。通过对比两种方式的特性差异和应用场景,提供实用的选择指南和性能优化建议,提升信号完整性仿真效率。

weixin_26846533的博客 261

【图论】单源最短路径(标准版)dijkstra以及堆优化

图存储方式:链式前向星 一, 基础dijkstra 基本思路: 1.定义ans[100000],ans[i]代表到达i点的最小花费 2.定义bool数组visit,代表是否来过这里 2.ans[起点] = 0, 其余的赋值为inf 3.定义一个curr变量,visit[current] = 1(访问过),代表现在的位置,初始值为起点。 4.列举所有与curr相联通的的点,将这些点(i)的ans值更新: ans[i] = min(ans[i], ans[curr] + ans[i] = m

Kokli的博客 507

A B C三个气象站的小波分析结果解读

在小波分析的过程中,信号的不同频率分量会在不同的尺度上显现,而纵轴上的数值表示信号在相应尺度上的强度或能量。2. **小波方差的横轴(水平轴)**:横轴上的尺度表示用于分析的小波函数的尺度。1. **共同趋势:** 在所有三个点的小波方差图中,随着尺度的增加,方差逐渐增大,尤其是在较大的时间尺度上。3. **尺度30的特殊性:** 在所有点的小波方差图中,尺度30似乎是一个特殊的点,对应着一个较长的时间尺度上的波动或变化。2. **方差的大小:** 方差的大小反映了在相应尺度下信号的波动强度。

weixin_44259522的博客 859

【洛谷 P4779】【模板】单源最短路径(标准版)题解(带权有向图+单源最短路+Dijkstra算法+链式前向星+最小堆)

2018 年 7 月 19 日,某位同学在一题里非常熟练地使用了一个广为人知的算法求最短路。然后呢?100→60;Ag→Cu;最终,他因此没能与理想的大学达成契约。小 F 衷心祝愿大家不再重蹈覆辙。

HEX9CF的技术博客 1561

基于EtherCAT的AM402与SV660N、IS620N伺服运动控制实战指南

本文详细介绍了基于EtherCAT总线的汇川AM402 PLC与SV660N、IS620N伺服驱动器构建运动控制系统的完整实战流程。内容涵盖硬件平台搭建、软件组态、关键参数设置、InoProShop编程及调试技巧,旨在帮助工程师快速掌握这一高精度、高响应的工业自动化解决方案。

weixin_29204205的博客 401

麒麟操作系统提示“默认密钥环已上锁”的解决办法

麒麟操作系统提示“默认密钥环已上锁”的解决办法

太极淘的博客 1万+

dijkstra

前言 SPFASPFASPFA算法由于它上限 O(NM)=O(VE)O(NM)=O(VE)O(NM) = O(VE)的时间复杂度,被卡掉的几率很大.在算法竞赛中,我们需要一个更稳定的算法:dijkstradijkstradijkstra. 什么是dijkstradijkstradijkstra? dijkstradijkstradijkstra是一种单源最短路径算法,时间复杂度上限...

little_sun的博客 6208

【WLAN】【测试】WPS测试方法小结

手机 一般稍微老的手机会支持,新手机反而不支持。 比如小米6(系统版本新的话不支持)在设置——高级设置——WPS连接。 笔记本 有些笔记本(如Surface Laptop 3)天生支持WPS,比如在连接某SSID的时候,会有“也可以通过按路由器上的按钮连接”这样的字样,出来后按AP的WPS按键即可以进行连接。 Qss软件 AP mesh组网中,Controller和Agent之间通过WIFI组网,可使用WPS的方式进行连接。可利用这点用Agent来测试AP的WPS功能。 ...

一介草民,只为生活。 1万+

题解:P4779 【模板】单源最短路径(标准版)

首先,题目说的很明白,这个广为人知的最短路算法就是 SPFA,它死了。这题会专门卡 SPFA,别问我咋知道的,在最劣情况下 SPFA 时间复杂度。,边权没有负数的情况下我们通常使用 dijkstra 算法,而在有负边权的情况下通常使用 ‌Bellman-Ford。上面的过程是 dijkstra 的朴素做法,复杂度。,然而这题需要使用更优的时间复杂度。,且可以更新最短路,丢入队列。的最短路,由于我们可以从。,可以更新最短路,丢入队列。的最短路,然后丢入队列。的最短路,然后丢入队列。拿出来,不能遍历,跳过。

Genshin_ht的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

洛谷P4779 【模板】单源最短路径

P4779 【模板】单源最短路径(标准版) 题目链接 https://www.luogu.org/problemnew/show/P4779 题目描述 给定一个 N个点,M条有向边的带非负权图,请你计算从 S出发,到每个点的距离。 数据保证你能从 S 出发到任意点。 输入输出格式 输入格式: 第一行为三个正整数 N,M,S。 第二行起 M行,每行三个非负整数 \(u_i, v_i, w_i\)表示...

weixin_30532987的博客 183

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

洛谷 P4779 【模板】单源最短路径(标准版)

洛谷 P4779 【模板】单源最短路径(标准版) Description 给定一个 N 个点,M 条有向边的带非负权图,请你计算从 S 出发,到每个点的距离。 数据保证你能从 S 出发到任意点。 1≤N≤100000; 1≤M≤200000; S=1 1≤ui,vi≤N 0≤wi≤10的9次方 0≤∑wi≤10的9次方 Input 第一行为三个正整数 N,M,S。 第二行起 M 行...

aochongbi5356的博客 332

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【洛谷P3371】【模板】单源最短路径(弱化版) 解题报告

让人最头大的一集。

Engels_Si_Fish的博客 1154

洛谷 P4779 --【模板】单源最短路径(标准版) 题解 By Kimi_Kai

一、题意 首先呢,阐述一下,这是一道最短路模板题,其实看题也看得出来… …,所以呢,我们先得搞清楚什么是最短路。

Kimi_Kai的博客 650

p4779 单源最短路径(标准版)-java、golang

p4779 单源最短路径(标准版)-java版

weixin_58428691的博客 1261

洛谷 P4779 【模板】单源最短路径(标准版)【最短路】【堆优化版Dijkstra】

洛谷 P4779 【模板】单源最短路径(标准版)【最短路】【堆优化版Dijkstra】

Derrickhang的博客 471

洛谷P4779 【模板】单源最短路径(标准版)

第一行为三个正整数n,m,s。第二行起 m 行,每行三个非负整数 ui​,vi​,wi​,表示从 ui​ 到 vi​ 有一条权值为 wi​ 的有向边。给定一个 n 个点,m 条有向边的带非负权图,请你计算从 s 出发,到每个点的距离。输出一行 n 个空格分隔的非负整数,表示 s 到每个点的距离。一题里非常熟练地使用了一个广为人知的算法求最短路。本题数据可能会持续更新,但不会重测,望周知。最终,他因此没能与理想的大学达成契约。小 F 衷心祝愿大家不再重蹈覆辙。数据保证你能从 s 出发到任意点。

wxz_y的博客 212

【洛谷 P3371】【模板】单源最短路径(弱化版)题解(带权有向图+单源最短路+Dijkstra算法+链式前向星)

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

HEX9CF的技术博客 1071

【模板】单源最短路径(Dijkstra算法)

题目 洛谷P4779【模板】单源最短路径(标准版) 题解 链式前向星(存边结构):与链表的结构和查找遍历方式相同,唯一的不同点就是插入的位置。链式前向星每次将新的元素插入链表头。为每一个节点建立一个链表,存入此节点的所有出边。 Dijkstra算法:这个算法要求所有边的权重都为非负值。定义d[i]为从起点到第i个节点的最短路径长度。 算法流程:假设起点为s。1.令d[s]=0 ,其它d[i]为无穷大 2.从没有被标记的节点中找出d[x]最小的节点x,然后标记x 3.枚举x

zjgmartin的博客 334

Dijkstra 算法(洛谷P4779题解)(单元最短路查询与路径输出)

【代码】Dijkstra 算法(洛谷P4779题解)(单元最短路查询与路径输出)

2403_86717971的博客 315

洛谷 P4779 【模板】单源最短路径(标准版) 题解

题目来源: https://www.luogu.org/problemnew/show/P4779 题目描述:   题目背景 狗哥做烂了最短路,突然机智的考了Bosh一道,没想到把Bosh考住了...你能帮Bosh解决吗? 他会给你100000000000000000000000000000000000%10金币w 题目描述 给定n个点的带权有向图,求从1到n的路径中边权之积最小的...

摇摇乐的博客 1139
上一篇: CF ABBYY Cup 3.0 - Finals A2. Oh Sweet Beaverette 题解 前缀和 贪心
下一篇: 洛谷 P4995 跳跳!题解 贪心
bbc_ouo
博客等级 码龄3年 2096粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值