3112. 访问消失节点的最少时间 Medium

news2024/9/22 3:51:51

给你一个二维数组 edges 表示一个 n 个点的无向图,其中 edges[i] = [ui, vi, lengthi] 表示节点 ui 和节点 vi 之间有一条需要 lengthi 单位时间通过的无向边。

同时给你一个数组 disappear ,其中 disappear[i] 表示节点 i 从图中消失的时间点,在那一刻及以后,你无法再访问这个节点。

注意,图有可能一开始是不连通的,两个节点之间也可能有多条边。

请你返回数组 answer ,answer[i] 表示从节点 0 到节点 i 需要的 最少 单位时间。如果从节点 0 出发 无法 到达节点 i ,那么 answer[i] 为 -1 。

示例 1:

输入:n = 3, edges = [[0,1,2],[1,2,1],[0,2,4]], disappear = [1,1,5]

输出:[0,-1,4]

解释:

我们从节点 0 出发,目的是用最少的时间在其他节点消失之前到达它们。

 ·对于节点 0 ,我们不需要任何时间,因为它就是我们的起点。

 ·对于节点 1 ,我们需要至少 2 单位时间,通过 edges[0] 到达。但当我们到达的时候,它已经消失了,所以我们无法到达它。

 ·对于节点 2 ,我们需要至少 4 单位时间,通过 edges[2] 到达。

示例 2:

输入:n = 3, edges = [[0,1,2],[1,2,1],[0,2,4]], disappear = [1,3,5]

输出:[0,2,3]

解释:

我们从节点 0 出发,目的是用最少的时间在其他节点消失之前到达它们。

 ·对于节点 0 ,我们不需要任何时间,因为它就是我们的起点。

 ·对于节点 1 ,我们需要至少 2 单位时间,通过 edges[0] 到达。

 ·对于节点 2 ,我们需要至少 3 单位时间,通过 edges[0] 和 edges[1] 到达。

示例 3:

输入:n = 2, edges = [[0,1,1]], disappear = [1,1]

输出:[0,-1]

解释:

当我们到达节点 1 的时候,它恰好消失,所以我们无法到达节点 1 。

提示:

 ·1 <= n <= 5 * 104

 ·0 <= edges.length <= 105

 ·edges[i] == [ui, vi, lengthi]

 ·0 <= ui, vi <= n - 1

 ·1 <= lengthi <= 105

 ·disappear.length == n

 ·1 <= disappear[i] <= 105

题目大意:只有在各结点的规定时间内才能访问各结点的情况下计算从0到达各结点的最短时间。

分析:

(1)由题可知这是单源最短路径问题,因此使用dijkstra算法;

(2)由于题中结点个数较多,因此使用优先级队列存储已访问过的结点中可以直接到达的未访问过的结点来加速查找距离0结点最近且未访问过的点;

(3)对于在规定时间外访问的结点只需不将其加入优先级队列即可。

class Solution {
public:
    vector<int> minimumTime(int n, vector<vector<int>>& edges, vector<int>& disappear) {
        int x,y,t,node,time,nt;
        vector<int> ans(n,-1);
        priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> q;
        vector<vector<pair<int,int>>> map(n);
        for(const auto& edge:edges){
            x=edge[0];y=edge[1];t=edge[2];
            if(x==y) continue;
            map[x].emplace_back(y,t);
            map[y].emplace_back(x,t);
        }
        q.emplace(0,0);
        ans[0]=0;
        while(q.size()){
            auto [time,node]=q.top();
            q.pop();
            if(time!=ans[node]) continue;
            for(const auto& [nextNode,nextTime]:map[node]){
                if((nt=time+nextTime)<disappear[nextNode]&&(ans[nextNode]==-1)||nt<ans[nextNode]){
                    ans[nextNode]=nt;
                    q.emplace(nt,nextNode);
                }
            }
        }
        return ans;
    }
};

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

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

相关文章

Linux-交换空间(Swap)管理

引入概念 在计算机中&#xff0c;硬盘的容量一般比内存大&#xff0c;内存&#xff08;4GB 8GB 16GB 32GB 64GB…&#xff09;&#xff0c;硬盘&#xff08;512GB 1T 2T…&#xff09;。 冯诺依曼的现代计算机结构体系里面的存储器就是内存 内存是一种易失性存储器&#xff0c…

如何在 PostgreSQL 中处理海量数据的存储和检索?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 如何在 PostgreSQL 中处理海量数据的存储和检索&#xff1f;一、优化表结构设计二、分区技术三、数据压…

二叉树的后序遍历(寻找重复的子树,序列化

class Solution {List<TreeNode> resnew LinkedList<>();Map<String,Integer> mapnew HashMap<>();//用于存储子树public List<TreeNode> findDuplicateSubtrees(TreeNode root) {String xfind(root);return res;}public String find(TreeNode r…

HZNUCTF2023中web相关题目

[HZNUCTF 2023 preliminary]guessguessguess 这道题目打不开了 [HZNUCTF 2023 preliminary]flask 这道题目考察SSTI倒序的模板注入&#xff0c;以及用env命令获得flag 看题目&#xff0c;猜测是SSTI模板注入&#xff0c;先输入{7*7},发现模板是倒序输入的 输入}}7*7{{返回77…

springboot nacos的各种注解、手动操作监听配置变化(监听指定DataId/监听任何变化)

文章目录 springboot nacos监听配置变化&#xff08;监听指定DataId/监听任何变化&#xff09;监听任何配置变化Nacos注解NacosConfigurationPropertiesNacosValueNacosConfigListenerNacosInjectedNacosConfigServiceNacosNamingService springboot nacos监听配置变化&#xf…

OpenAI 开打价格战,GPT-4o 最新变种价格骤降 96%-97%

当地时间周四早晨&#xff0c;美国人工智能初创公司 OpenAI 宣布&#xff0c;正式上架价格显著下降的新一代入门级别人工智能「小模型」GPT-4o mini。 价格比较&#xff5c;图片来源&#xff1a;Artificial Analysis 据 OpenAI 披露&#xff0c;GPT-4o mini 的 API 价格将会是…

【AI大模型Agent探索】深入探索实践 Qwen-Agent 的 Function Calling

系列篇章&#x1f4a5; No.文章1【Qwen部署实战】探索Qwen-7B-Chat&#xff1a;阿里云大型语言模型的对话实践2【Qwen2部署实战】Qwen2初体验&#xff1a;用Transformers打造智能聊天机器人3【Qwen2部署实战】探索Qwen2-7B&#xff1a;通过FastApi框架实现API的部署与调用4【Q…

django报错(二):NotSupportedError:MySQL 8 or later is required (found 5.7.43)

执行python manage.py runserver命令时报版本不支持错误&#xff0c;显示“MySQL 8 or later is required (found 5.7.43)”。如图&#xff1a; 即要MySQL 8或更高版本。但是企业大所数用的还是mysql5.7相关版本。因为5.7之后的8.x版本是付费版本&#xff0c;贸然更新数据库肯定…

JAVASE-医疗管理系统项目总结

文章目录 项目功能架构运行截图数据库设计设计模式应用单列设计模式JDBC模板模板设计模式策略模式工厂设计模式事务控制代理模式注解开发优化工厂模式 页面跳转ThreadLocal分页查询实现统计模块聊天 项目功能架构 传统的MVC架构&#xff0c;JavaFX桌面端项目&#xff0c;前端用…

水经微图Web版1.10.0发布

水经微图&#xff08;简称“微图”&#xff09;新版已上线&#xff0c;在该版本中主要新增了三调图例符号库&#xff0c;以及其它功能的优化。 当前版本 当前版本号为&#xff1a;1.10.0-beta.2 如果你发现该版本中存在问题&#xff0c;请及时反馈给我们修订。 关于我们产品…

Adobe国际认证详解-影视后期

在当今的数字媒体时代&#xff0c;影视后期制作作为创意产业的核心环节&#xff0c;对于专业技能的要求日益提高。Adobe国际认证&#xff0c;作为全球创意设计领域的重要标杆&#xff0c;为影视后期制作人员提供了一个展示自我、提升技能的国际舞台。 何为影视后期&#xff1f;…

javaEE (3)

Json json--JavaScript object notation (js对象表现形式) 在后端将java对象转为json格式的字符串 有很多第三方组件,可以直接将java对象转为json格式的字符串 new objectMapper().writeValueAsString(); 返回string类型 <!-- jackson--><dependency>&…

华为od机试真题 — 分披萨(Python)

题目描述 “吃货”和“馋嘴”两人到披萨店点了一份铁盘(圆形)披萨&#xff0c;并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。 但是粗心服务员将披萨切成了每块大小都完全不同奇数块&#xff0c;且肉眼能分辨出大小。 由于两人都想吃到最多的披萨&#xff0c;他们商量…

Open3d入门 点云拼接算法

点云拼接&#xff08;Point Cloud Stitching&#xff09;是将从不同视角或位置获取的多组点云数据对齐到同一个坐标系中的过程&#xff0c;以形成一个完整的三维模型。这项技术在计算机视觉、机器人导航、三维重建和无人驾驶等领域有着广泛的应用。 点云配准&#xff08;Point…

Qt 制作安装包

记录使用Qt工具制作一个安装包的过程 目录 1.准备工作 1.1检查Qt Installer Frameworks是否安装 1.2.安装Qt Installer Frameworks 1.3准备release出来的exe dll等文件 2.创建打包工程所需要的文件及目录 2.1创建子目录 2.2 创建工程文件 2.3 创建config/config.xml …

5.4 软件工程-系统设计

系统设计 - 概述 设计软件系统总体结构 数据结构及数据库设计 编写概要设计文档、评审 详细设计的基本任务 真题

HDU1011——Starship Troopers(树形DP),HDU1012——u Calculate e,HDU1013——Digital Roots

目录 HDU1011——Starship Troopers&#xff08;树形DP&#xff09; 题目描述 运行代码 代码思路 树形DP HDU1012——u Calculate e 题目描述 运行代码 代码思路 HDU1013——Digital Roots 题目描述 超时代码 改进后依旧超时代码 运行代码 代码思路 HDU1011——…

工时记录软件选型指南

国内外主流的10款工时计算软件对比&#xff1a;PingCode、Worktile、Tita、易企秀、奇鱼、Teambition、Timely、Toggl Track、RescueTime、ClickUp。 在忙碌的工作中&#xff0c;记录和管理工时常常是令人头疼的问题。工时记录软件的选择不仅能帮你省时省力&#xff0c;还能大幅…

视频素材网站无水印的有哪些?热门视频素材网站分享

当我们走进视频创作的精彩世界时&#xff0c;一个难题常常摆在面前——那些高品质、无水印的视频素材究竟应该在哪里寻找&#xff1f;许多视频创作者感叹&#xff0c;寻找理想的视频素材难度甚至超过了寻找伴侣&#xff01;但不用担心&#xff0c;今天我将为您介绍几个优质的视…

理解UI设计:UI设计师的未来发展机遇

UI设计师的出现是互联网时代的设计变革。随着移动互联网的快速发展&#xff0c;移动产品设计师非常短缺。高薪资让许多其他行业的设计师已经转向了UI设计。那么什么是UI设计呢&#xff1f;UI设计师负责什么&#xff1f;UI设计的发展趋势和就业前景如何&#xff1f;这些都是许多…