华为OD机试 - 最小传输时延 - 深度优先搜索DFS(Java 2023 B卷 100分)

news2025/1/10 20:42:05

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出
      • 3、说明
      • 计算源节点1到目的节点5,符合要求的时延集合

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

某通信网络中有N个网络节点,用1到N进行标识。

网络通过一个有向无环图表示,其中图的边的值表示结点之间的消息传递时延。

现给定相连节点之间的时延列表times[i] = {u,v,w},u表示源节点,v表示目的节点,w表示u和v之间的消息传递时延。

请计算给定源节点到目的节点的最小传输时延,如果目的节点不可达,返回-1。

二、输入描述

第一行输入两个正整数,表示网络节点的个数N,M,用空格分割;

下面的M行表示两个节点之间的时延列表{u,v,w}

最后一行输入两个正整数,u表示源节点,v表示目的节点;

三、输出描述

输出一个整数,表示源节点到目的节点的最小时延。

四、解题思路

  1. 定义一个时延列表{u,v,w}的集合list;
  2. 将M行输入的时延列表{u,v,w}加入list;
  3. 递归调用,计算定源节点到目的节点,符合要求的时延集合;
  4. 计算给定源节点到目的节点的最小传输时延;
  5. 如果目的节点不可达,返回-1

五、Java算法源码

// 完成源节点到目的节点的时延集合
public static List<Integer> delayList = new ArrayList<>();
// 时延列表的集合
// 下面的M行表示两个节点之间的时延列表{u,v,w}
public static List<int[]> uvwList = new ArrayList<>();

/**
 * 3 3
 * 1 2 11
 * 2 3 13
 * 1 3 50
 * 1 3
 *
 * 24
 */
public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    // 网络节点的个数
    int N = sc.nextInt();
    // 时延列表的长度
    int M = sc.nextInt();

    // 下面的M行表示两个节点之间的时延列表{u,v,w}
    for (int j = 0; j < M; j++) {
        // u表示源节点,v表示目的节点,w表示u和v之间的消息传递时延
        int[] arr = new int[3];

        // u表示源节点
        arr[0] = sc.nextInt();
        if (arr[0] < 1 || arr[0] > N) {
            System.out.println("源节点输入值不合规");
            break;
        }

        // v表示目的节点
        arr[1] = sc.nextInt();
        if (arr[1] < 1 || arr[1] > N) {
            System.out.println("目的节点输入值不合规");
            break;
        }

        // w表示u和v之间的消息传递时延
        arr[2] = sc.nextInt();
        uvwList.add(arr);
    }

    // 源节点
    int begin = sc.nextInt();
    // 目的节点
    int end = sc.nextInt();

    // 计算源节点到目的节点,符合要求的时延集合
    getDelay(begin, end, 0);

    // 如果目的节点不可达,返回-1
    if (delayList.size() == 0) {
        System.out.println(-1);
    } else {
        // 计算给定源节点到目的节点的最小传输时延
        System.out.println(Collections.min(delayList));
    }
}

/**
 * 计算源节点到目的节点,符合要求的时延集合
 *
 * @param begin 源节点
 * @param end   目的节点
 * @param count 时延总数
 */
public static void getDelay(int begin, int end, int count) {
    // 遍历时延列表的集合List<{u,v,w}>
    for (int i = 0; i < uvwList.size(); i++) {
        int[] temp = uvwList.get(i);
        // 第一个节点 = 源节点
        if (temp[0] == begin) {
            // 如果动态源节点 = 目的节点,完成源节点到目的节点的网络传输
            if (temp[1] == end) {
                // 累加消息传递时延
                delayList.add(count + temp[2]);
                continue;
            }
            // 第二个节点 = 动态源节点,完成源节点到目的节点的网络传输
            getDelay(temp[1], end, count + temp[2]);
        }
    }
}

六、效果展示

1、输入

5 4
1 3 10
3 4 5
4 5 12
1 5 25
1 5

2、输出

25

3、说明

计算源节点1到目的节点5,符合要求的时延集合

1到3时延10 + 3到4时延5 + 4到5时延12 = 27;

1到5时延25;

所以源节点1到目的节点5的最小时延是25。

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述

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

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

相关文章

Gnomon绑定基础(约束 IK 节点)

点约束 方向约束 父约束 目标约束 修改后 对象方向 IK控制柄 直的骨骼&#xff0c;指定IK怎么弯曲 直的骨骼&#xff0c;指定IK怎么弯曲 样条曲线 数学节点 乘除节点 混合节点 注意

免杀对抗-无文件落地分离拆分-文本提取+加载器分离+参数协议化+图片隐写

无文件落地&分离拆分 无文件落地&分离拆分其实就是内存免杀&#xff0c;内存免杀是将shellcode直接加载进内存&#xff0c;由于没有文件落地&#xff0c;因此可以绕过文件扫描策略的查杀。为了使内存免杀的效果更好&#xff0c;在申请内存时一般采用渐进式申请一块可读…

Mysql数据库SQL语句与管理

Mysql数据库基本语句与管理 1、常用的数据类型2、数据库管理3、SQL语句3.1语言分类3.2sql语句 4、DQL查询数据记录4.1查询4.2修改4.3删除4.4alter修改 5、总结 1、常用的数据类型 数据类型 &#xff08;1&#xff09;int&#xff1a;整型 用于定义整数类型的数据 &#xff08;…

使用Spring Boot和MyBatis访问数据库

使用Spring Boot和MyBatis访问数据库 Spring Boot和MyBatis是Java开发中非常流行的框架&#xff0c;它们可以帮助你轻松地构建和管理数据库应用程序。本文将介绍如何使用Spring Boot和MyBatis访问数据库&#xff0c;并提供示例代码以帮助你入门。 准备工作 在开始之前&#x…

什么是FMEA(失效模式和影响分析)?

失效模式和影响分析&#xff08;FMEA&#xff09;是一个在开发阶段&#xff0c;用于确定产品或流程可能的风险和失败点的有条理的过程。FMEA团队会研究失效模式&#xff0c;也就是产品或流程中可能出错的地方&#xff0c;以及这些失效可能带来的影响&#xff08;如风险、损害、…

小程序如何关联公众号来发送模板消息

有时候我们可能需要通过公众号来发送一些小程序的服务通知&#xff0c;比如订单提醒、活动通知等。那么要如何操作呢&#xff1f; 1. 有一个通过了微信认证的服务号。需要确保小程序和公众号是同一个主体的。也就是说&#xff0c;小程序和公众号应该都是属于同一个企业。如果还…

当下IT测试技术员的求职困境

从去年被裁到现在&#xff0c;自由职业的我已经有一年没有按部就班打卡上班了。期间也面试了一些岗位&#xff0c;有首轮就挂的&#xff0c;也有顺利到谈薪阶段最后拿了offer的&#xff0c;不过最后选择了拒绝。 基于自己近一年的面试求职经历&#xff0c;我想聊聊当下大家在求…

博弈论——反应函数

反应函数 1 引言 谢老师的《经济博弈论》书中对反应函数并没有给出一般笼统的定义&#xff0c;而是将其应用与古诺模型并给出了相关解释&#xff1a;反应函数是指在无限策略的古诺博弈模型中&#xff0c;博弈方的策略有无限多种&#xff0c;因此各个博弈方的最佳对策也有无限…

双向认证配置

1.Linux准备环境 openssl 使用openssl version查看openssl版本&#xff0c;如果没有安转openssl&#xff0c;可以执行 yum install openssl 安装 nginx 我们使用nginx来进行https的双向认证&#xff0c;首先我们需要安装nginx并附带SSL 模块 详细的安装过程可以查看 Linux安装n…

Arrays的用法(常见方法的使用)

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 常见算法的API&#xff08;Arrays&#xff…

Cookie和Session的作用

最近学习Session和Cookie的总结&#xff0c;我发现好多做测试的朋友对这个的理解不是那么透彻&#xff1b;如果理解了Cookie和session的原理和使用&#xff0c;在我们的测试工作中&#xff0c;有很大的帮助&#xff1b;尤其是在接口测试&#xff0c;性能测试中。。。 目录 一、…

报错注入

1.原理 2.注入手法

tomcat线程模型

NioEndpoint组件 Tomcat的NioEndpoint实现了I/O多路复用模型。 工作流程 Java的多路复用器的使用&#xff1a; 创建一个Selector&#xff0c;在其上注册感兴趣的事件&#xff0c;然后调用select方法&#xff0c;等待感兴趣的事情发生感兴趣的事情发生了&#xff0c;比如可读…

java Spring Boot日志输出格式配置方法

前面 我们文章中 我们已经能把日志控制住了 但前面这些信息 又是什么呢&#xff1f; 如果不了解日志 看起来是挺痛苦的 其实 我们可以将日志分为 一下几个部分去读它 首先是这个日志的输出时间 是在什么时候发生的 然后是 日志的基本 之前我们也讲过 有信息 报错 警告等 然后…

适用于初学者,毕业设计的5个c语言项目,代码已开源

C语言项目集 项目介绍 该项目适用于初学者学习c语言&#xff0c;也适用于高校学生课程设计&#xff0c;毕业设计参考。 项目并不能满足所有人的需求&#xff0c;可进行项目指导&#xff0c;定制开发。 开源地址 c语言项目代码地址 项目列表 该项目包含如下5个管理系统&am…

ESP8266使用记录(三)

通过udp把mpu6050数据发送到PC端 /********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : ESP8266WiFiUdp_12 团队/Team : 太极创客团队 / Taichi-Maker (w…

【视频处理】通过调用图像来重建新影片及计算颜色通道的平均灰度值,并检测帧与前一帧之间的差异(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

网易云信4K 8K RTC助力远程医疗的技术实践

// 编者按&#xff1a;随着近年来国家关于缓解医疗资源分配不均的一系列政策出台&#xff0c;远程医疗作为平衡医疗资源分配的有力手段&#xff0c;目前正处于强劲发展阶段。网易云信运用超高清RTC视频技术助力医疗行业实现了远程高清视频病理分析和手术示教等能力。LiveVide…

Beyond Compare 4对比工具注册

Beyond Compare是一款文件及文件夹&#xff08;目录&#xff09;的对比工具。 Beyond Compare不仅可以快速比较出两个目录的不同&#xff0c;还可以比较每个文件的内容&#xff0c;而且可以任意显示比较结果。 Beyond Compare程序内建了文件浏览器&#xff0c;方便您对文件、…