LeetCode 2065. 最大化一张图中的路径价值(DFS)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一张 无向 图,图中有 n 个节点,节点编号从 0 到 n - 1 (都包括)。
同时给你一个下标从 0 开始的整数数组 values ,其中 values[i] 是第 i 个节点的 价值 。同时给你一个下标从 0 开始的二维整数数组 edges ,其中 edges[j] = [uj, vj, timej] 表示节点 uj 和 vj 之间有一条需要 timej 秒才能通过的无向边。最后,给你一个整数 maxTime 。

合法路径 指的是图中任意一条从节点 0 开始,最终回到节点 0 ,且花费的总时间 不超过 maxTime 秒的一条路径。
你可以访问一个节点任意次
一条合法路径的 价值 定义为路径中 不同节点 的价值 之和 (每个节点的价值 至多 算入价值总和中一次)。

请你返回一条合法路径的 最大 价值。

注意:每个节点 至多 有 四条 边与之相连。

示例 1:
在这里插入图片描述

输入:values = [0,32,10,43], 
edges = [[0,1,10],[1,2,15],[0,3,10]], maxTime = 49
输出:75
解释:
一条可能的路径为:0 -> 1 -> 0 -> 3 -> 0 。
总花费时间为 10 + 10 + 10 + 10 = 40 <= 49 。
访问过的节点为 013 ,最大路径价值为 0 + 32 + 43 = 75

示例 2:
在这里插入图片描述

输入:values = [5,10,15,20], 
edges = [[0,1,10],[1,2,10],[0,3,10]], maxTime = 30
输出:25
解释:
一条可能的路径为:0 -> 3 -> 0 。
总花费时间为 10 + 10 = 20 <= 30 。
访问过的节点为 03 ,最大路径价值为 5 + 20 = 25

示例 3:
在这里插入图片描述

输入:values = [1,2,3,4], 
edges = [[0,1,10],[1,2,11],[2,3,12],[1,3,13]], maxTime = 50
输出:7
解释:
一条可能的路径为:0 -> 1 -> 3 -> 1 -> 0 。总花费时间为 10 + 13 + 13 + 10 = 46 <= 50 。
访问过的节点为 013 ,最大路径价值为 1 + 2 + 4 = 7

示例 4:
在这里插入图片描述

输入:values = [0,1,2], 
edges = [[1,2,10]], maxTime = 10
输出:0
解释:
唯一一条路径为 0 。总花费时间为 0 。
唯一访问过的节点为 0 ,最大路径价值为 0 。提示:
n == values.length
1 <= n <= 1000
0 <= values[i] <= 10^8
0 <= edges.length <= 2000
edges[j].length == 3
0 <= uj < vj <= n - 1
10 <= timej, maxTime <= 100
[uj, vj] 所有节点对 互不相同 。
每个节点 至多有四条 边。
图可能不连通。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-path-quality-of-a-graph
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 看见条件 10 <= timej, maxTime <= 100,最多 dfs 10 层就完事了
  • 建图,暴力搜索就是了
class Solution {int maxVal = 0;
public:int maximalPathQuality(vector<int>& values, vector<vector<int>>& edges, int maxTime) {int n = values.size();vector<unordered_map<int,int>> g(n);vector<int> vis(n);for(auto& e : edges){ // 建图g[e[0]][e[1]] = e[2];g[e[1]][e[0]] = e[2];}vis[0] = 1; // 访问节点次数dfs(g, values, maxTime, vis, 0, 0, values[0]);return maxVal;}void dfs(vector<unordered_map<int,int>>& g, vector<int>& values, int maxTime, vector<int>& vis, int idx, int time, int val){if(time > maxTime) return; // 超时了if(idx==0 && val > maxVal){maxVal = val;}for(auto& nid_t : g[idx]){ //遍历相邻节点int nid = nid_t.first; // 相邻节点编号int t = nid_t.second; // 需要花费时间if(vis[nid] == 0) // 没有访问这个节点,可以获得价值{vis[nid]++;dfs(g, values, maxTime, vis, nid, time+t, val+values[nid]);vis[nid]--;}else // 访问过了,不能再获得价值{vis[nid]++;dfs(g, values, maxTime, vis, nid, time+t, val);vis[nid]--;}}}
};

404 ms 23.6 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

java第九章编写一个能够产生_第九章java教程.ppt

第九章java教程5、下面哪个选项能够构造一个BufferedInputStream流&#xff1f;() A. New BufferedInputStream(“in.txt”); B. New BufferedInputStream(new File(“in.txt”)); C. New BufferedInputStream(new Write(“in.txt”)); D. New BufferedInputStream(new InputSt…

hello nodejs

文章1一步&#xff1a;下载、安装文件 打开nodejs官方网站http://www.nodejs.org/download/ 。选择须要的版本号。直接打开。默认安装就可以 第二步&#xff1a;编写測试代码: var http require(http); http.createServer(function(req, res) {res.writeHead(200, {Content-Ty…

LeetCode 1739. 放置盒子(数学)

文章目录1. 题目2. 解题1. 题目 有一个立方体房间&#xff0c;其长度、宽度和高度都等于 n 个单位。 请你在房间里放置 n 个盒子&#xff0c;每个盒子都是一个单位边长的立方体。放置规则如下&#xff1a; 你可以把盒子放在地板上的任何地方。如果盒子 x 需要放置在盒子 y 的…

java 线程池的理解_JAVA线程池原理的理解

线程池原理基础理解&#xff1a;线程池初始化规定个数的线程&#xff0c;然后这些线程一直运行&#xff0c;并且监控线程队列&#xff0c;只要线程队列被添加进线程&#xff0c;那么线程池不断从队列中取出线程运行。直到队列中的线程为空。实例代码如下&#xff1a;package xi…

Linux什么时候在pc机上有一席之地

这样一个题目&#xff0c;或许会让很多linux粉丝们感到很失望&#xff0c;linux在粉丝们眼里&#xff0c;已经是开源&#xff0c;自由软件&#xff0c;反抗微软暴政的等同词。但是linux在个人电脑领域&#xff0c;确实已经面临鸡肋的局面&#xff0c;未来的发展&#xff0c;即使…

LeetCode 2068. 检查两个字符串是否几乎相等

文章目录1. 题目2. 解题1. 题目 如果两个字符串 word1 和 word2 中从 ‘a’ 到 ‘z’ 每一个字母出现频率之差都 不超过 3 &#xff0c;那么我们称这两个字符串 word1 和 word2 几乎相等 。 给你两个长度都为 n 的字符串 word1 和 word2 &#xff0c;如果 word1 和 word2 几乎…

php文本框自动补全,PHP自动补全表单的两种方法

效果图&#xff1a;第一种&#xff1a;从数据库中检索之后补全第二种&#xff1a;邮箱等纯前端的补全先说第二种&#xff0c;使用开源的插件&#xff0c;所以相对简单。github上面的项目 completer。https://github.com/fengyuanchen/completer 做法特别容易&#xff0c;github…

Spring的@Scheduled任务调度

一. 定时任务实现方式 定时任务实现方式&#xff1a; Java自带的java.util.Timer类&#xff0c;这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行&#xff0c;但不能在指定时间运行。一般用的较少&#xff0c;这篇文章将不做详细介…

LeetCode 2069. 模拟行走机器人 II(模拟)

文章目录1. 题目2. 解题1. 题目 给你一个在 XY 平面上的 width x height 的网格图&#xff0c;左下角 的格子为 (0, 0) &#xff0c;右上角 的格子为 (width - 1, height - 1) 。 网格图中相邻格子为四个基本方向之一&#xff08;"North"&#xff0c;"East&quo…

eclipse php xdebug,Eclipse for php + Xdebug搭建PHP的调试环境

Eclipse for php Xdebug搭建PHP的调试环境Eclipse for php Xdebug搭建PHP的调试环境第二步&#xff1a;下载Xdebug (下载地址位于&#xff1a; http://xdebug.org/download.php&#xff0c;我的PHP版本为 PHP 5.3.28 Thread Safety&#xff0c; Apach为2.2.25&#xff0c;使用…

ROS2.9.27架设网吧软路由实战篇之端口映射与回流

转载&#xff1a;http://blog.csdn.net/zm2714/article/details/7924280 上一篇&#xff1a;ROS2.9.27架设网吧软路由实战篇之连通网络&#xff0c;主要讲述了网吧架设软路由ROS2.9.27的基本配置&#xff0c;目的就是使网吧能顺利连接外网。没有涉及到更丰富的其它功能和网络安…

LeetCode 2070. 每一个查询的最大美丽值(离线查询+排序+优先队列)

文章目录1. 题目2. 解题1. 题目 给你一个二维整数数组 items &#xff0c;其中 items[i] [pricei, beautyi] 分别表示每一个物品的 价格 和 美丽值 。 同时给你一个下标从 0 开始的整数数组 queries 。对于每个查询 queries[j] &#xff0c;你想求出价格小于等于 queries[j]…

php接收二进制流,php接收二进制流【转】

标签&#xff1a;binary 文件 com post 进制 二进制 tip form 生成文件/** 二进制流生成文件* $_POST 无法解释二进制流&#xff0c;需要用到 $GLOBALS[‘HTTP_RAW_POST_DATA‘] 或 php://input* $GLOBALS[‘HTTP_RAW_POST_DATA‘] 和 php://input 都不能用于 …

提交app时候90475,90474

提交app是遇到如下错误&#xff1a; ERROR ITMS-90475: "Invalid Bundle. iPad Multitasking support requires launch story board in bundle xxxx." ERROR ITMS-90474: "Invalid Bundle. iPad Multitasking support requires these orientations: UIInterfac…

LeetCode 2071. 你可以安排的最多任务数目(二分查找)

文章目录1. 题目2. 解题1. 题目 给你 n 个任务和 m 个工人。每个任务需要一定的力量值才能完成&#xff0c;需要的力量值保存在下标从 0 开始的整数数组 tasks 中&#xff0c;第 i 个任务需要 tasks[i] 的力量才能完成。 每个工人的力量值保存在下标从 0 开始的整数数组 worke…

crontab 执行php脚本,为什么crontab没有执行我的PHP脚本?

我已经构建了一个php文件来检查一些结果,所以我需要设置一个cronjob.我设置一个每30分钟运行一次,以便结果发送.但是,我不知道为什么我的crontab每隔30分钟就没有运行.以下是我设置crontab的方法&#xff1a;*/30 * * * * php /var/www/html/result.php我已经确认我的文件目录是…

用JS来create结点,纯JS代码生成html页面(作业练习)

<script>window.onload function(){document.title 表单示例;var body document.body;// body append child beginvar center document.createElement(center); body.appendChild(center);var h1 document.createElement(h1);h1.innerHTML 增加用户;center.appendC…

LeetCode 2073. 买票需要的时间

文章目录1. 题目2. 解题1. 题目 有 n 个人前来排队买票&#xff0c;其中第 0 人站在队伍 最前方 &#xff0c;第 (n - 1) 人站在队伍 最后方 。 给你一个下标从 0 开始的整数数组 tickets &#xff0c;数组长度为 n &#xff0c;其中第 i 人想要购买的票数为 tickets[i] 。 …

docker php nginx,使用docker快速搭建nginx+php环境

经过了繁琐的docker环境安装&#xff0c;看了下镜像/容器的简单使用&#xff0c;开始进行nginxphp环境的搭建&#xff0c;本文记录一下在安装过程中的笔记。

使用bootstrap-table插件

1.用户提交信息过滤表格内容&#xff1a; a.设置表格查询参数&#xff0c;并在用户提交按钮时候更新表格 <form id"current_table" class"form-inline" role"form" onSubmit"return table_filter(this);">... </form> …