《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(49)万鸦壶焚网络 - 网络延迟时间(Bellman-Ford)

news/2025/3/18 20:56:02/

《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(49)万鸦壶焚网络 - 网络延迟时间(Bellman-Ford)

哪吒在数据修仙界中继续他的修炼之旅。这一次,他来到了一片神秘的万鸦壶网络,壶中网络错综复杂,节点之间的延迟各不相同。壶的入口处有一块巨大的石碑,上面刻着一行文字:“欲破此壶,需以万鸦壶之力,焚网络,网络延迟显真身。”

哪吒定睛一看,石碑上还有一行小字:“网络拓扑结构如下,节点K到其他所有节点的最短延迟时间的最大值即为网络延迟时间。”哪吒心中一动,他知道这是一道关于网络延迟时间的难题,需要通过Bellman-Ford算法来计算从起点到所有节点的最短路径,进而找到最大延迟时间。

暴力解法:万鸦壶的初次尝试

哪吒心想:“要计算网络延迟时间,我可以尝试所有可能的路径。”他催动万鸦壶之力,从起点节点开始,逐个节点访问,记录每条路径的延迟时间,试图找到最短路径。

#include <vector>
#include <climits>
using namespace std;int networkDelayTime(vector<vector<int>>& times, int n, int k) {vector<int> dist(n + 1, INT_MAX);dist[k] = 0;for (int i = 0; i < n - 1; ++i) {for (auto& time : times) {int u = time[0];int v = time[1];int w = time[2];if (dist[u] != INT_MAX && dist[u] + w < dist[v]) {dist[v] = dist[u] + w;}}}int maxDelay = 0;for (int i = 1; i <= n; ++i) {if (dist[i] == INT_MAX) return -1;maxDelay = max(maxDelay, dist[i]);}return maxDelay;
}

哪吒成功地计算了网络延迟时间,但万鸦壶的光芒却黯淡了下来。他意识到,这种方法虽然可行,但效率低下,尤其是当网络节点数量很多时,灵力消耗巨大。

C++语法点

在C++中,Bellman-Ford算法涉及到图的邻接表表示和距离数组的更新。以下是一些重要特性:

  • 邻接表

    • 使用vector<vector<int>>表示图的邻接表。
    • 常用操作:
      • times:存储所有边的信息,每条边包含起点、终点和权重。
  • 距离数组


http://www.ppmy.cn/news/1580160.html

相关文章

机器学习扫盲系列(2)- 深入浅出“反向传播”-1

系列文章目录 机器学习扫盲系列&#xff08;1&#xff09;- 序 机器学习扫盲系列&#xff08;2&#xff09;- 深入浅出“反向传播”-1 文章目录 前言一、神经网络的本质二、线性问题解析解的不可行性梯度下降与随机梯度下降链式法则 三、非线性问题激活函数 前言 反向传播(Ba…

项目启动 java.lang.OutOfMemoryError

一般由于初始配置的堆内存不够导致该问题。 java: java.lang.OutOfMemoryError :xxxxxx IDE 打开 Setting -> Compiler -> Shared build process heap size(Mbytes)增加对应堆内存重启项目

Linux第三次作业

一.创建根目录结构中的所有的普通文件 使用 mkdir -pv [路径] 创建目录文件 使用 touch [路径] 创建普通文件 二.列出所有账号的账号名 用 cat 命令查看在 /etc/passwd 中的用户信息 用 cut -d [ ] -f[ ] 命令切割出所有用户名 三.将/etc/passwd中内容按照冒号隔开的第三个字符…

Android实现简易计算器

<?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" android:layout_width"match_parent" android:layout_height"match_parent" and…

嵌入式八股,手撕线程池(C++)

线程池的主要目的是复用线程资源&#xff0c;减少线程创建和销毁的开销&#xff0c;同时提高程序的并发性能。 也就是说&#xff0c;我创建一个线程对象&#xff0c;他可以复用&#xff0c;线程池里有多个线程对象&#xff0c;有任务来了&#xff0c;我调用一个&#xff0c;用…

Qt常用控件之表单布局QFormLayout

表单布局QFormLayout QFormLayout 是一个表单布局控件&#xff0c;属于 QGridLayout 的特殊情况&#xff0c;多用于左列提示&#xff0c;右列输入框这种 “表单” 样式。 1. 使用QFormLayout制作一个注册界面表单 addRow() 的第一个参数固定是 QLabel &#xff0c;第二个参数…

SQL Server性能优化实战

1. SQL Server性能调优的目标与意义 在处理大量数据的应用场景中(如在线购物网站、数据分析平台等),SQL Server作为企业级数据库的核心,其性能直接影响应用整体的响应时间和业务效率。以下是一些优化SQL Server性能的目的: 提高查询执行速度。减少等待时间,提升系统吞吐…

鸿蒙的 Stage 模型

鸿蒙的 Stage 模型 在鸿蒙 Next 开发中&#xff0c;Stage 模型是应用开发的核心架构之一&#xff0c;它为开发者提供了一种高效、灵活的方式来构建分布式应用。本文将详细介绍鸿蒙 Stage 模型的基本概念、应用配置文件的使用、UIAbility 组件的介绍以及如何通过 Stage 模型开发…