当前位置: 首页 > article >正文

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

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

题目

在这里插入图片描述

题目解析及思路

题目要求返回从0到达其他点的最短时间,但是每个点有一个消失时间,过了消失时间这个点就无法到达

也就是迪杰斯特拉模板 + 如果时间过了就不更新dis

代码

class Solution {
public:
    vector<int> minimumTime(int n, vector<vector<int>>& edges, vector<int>& disappear) {
        //邻接表
        vector<vector<pair<int, int>>> g(n);
        for (auto& e : edges) {
            int x = e[0], y = e[1], wt = e[2];
            g[x].emplace_back(y, wt);
            g[y].emplace_back(x, wt);
        }

        vector<int> dis(n,-1);
        dis[0] = 0;
        priority_queue<pair<int,int>,vector<pair<int,int>>,greater<>> pq;
        pq.emplace(0,0);
        while(!pq.empty()){
            auto [dx,x] = pq.top();
            pq.pop();
            //因为可能在队列中同时存在多个x
            //如果之前取出过x,说明0到x的距离已经是最短了,也就是dis[x]一定小于之前存的dx
            //防止重复遍历已经确定最短的点
            if(dx > dis[x]){
                continue;
            }
            for(auto& [y,d]:g[x]){
                int new_dis = dx + d;
                if(new_dis < disappear[y] && (dis[y] < 0 || new_dis < dis[y])){
                    dis[y] = new_dis;
                    pq.emplace(new_dis,y);
                }
            }
        }
        return dis;
    }
};

http://www.kler.cn/a/566333.html

相关文章:

  • FS800DTU联动OneNET平台数据可视化View
  • git从零学起
  • std::sort 排序算法本质
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-ops.py
  • 软件工程复试专业课-能力成熟度模型CMM
  • 科技赋能!深圳市悠声科技有限公司荣获“GAS消费电子科创奖-技术进步奖”!
  • 理解 AI IDE 中的代码库索引:深入探讨 Cursor 的实现
  • 区块链的基本原理和优势
  • 刨析刷任务赚钱平台的算法(众包经济应用)
  • 服务器间免密登录
  • 单片机学习笔记——入门51单片机
  • spring注解开发(Spring整合MyBatis——Mapper代理开发模式、(Spring、MyBatis、Jdbc)配置类)(6)
  • 【Java】Tomcat日志
  • qt:MainWindow
  • 【AI深度学习基础】NumPy完全指南进阶篇:核心功能与工程实践(含完整代码)
  • 一文掌握Charles抓包工具的详细使用
  • 第十五篇GEE中下载夜间灯光数据
  • 《A++ 敏捷开发》- 17 持续集成
  • 微服务架构实践:SpringCloud与Docker容器化部署
  • FFmpeg入门:最简单的视频播放器