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,一经查实,立即删除!

相关文章

LeetCode 1739. 放置盒子(数学)

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

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

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

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]…

提交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…

LeetCode 2073. 买票需要的时间

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

LeetCode 2074. 反转偶数长度组的节点(链表)

文章目录1. 题目2. 解题1. 题目 给你一个链表的头节点 head 。 链表中的节点 按顺序 划分成若干 非空 组&#xff0c;这些非空组的长度构成一个自然数序列&#xff08;1, 2, 3, 4, …&#xff09;。一个组的 长度 就是组中分配到的节点数目。换句话说&#xff1a; 节点 1 分…

LeetCode 2075. 解码斜向换位密码(模拟)

文章目录1. 题目2. 解题1. 题目 字符串 originalText 使用 斜向换位密码 &#xff0c;经由 行数固定 为 rows 的矩阵辅助&#xff0c;加密得到一个字符串 encodedText 。 originalText 先按从左上到右下的方式放置到矩阵中。 先填充蓝色单元格&#xff0c;接着是红色单元格…

php 无法加载css文件,解决ThinkPHP样式无法加载问题(CSS,JS),

解决ThinkPHP样式无法加载问题(CSS,JS)解决了ThinkPHP风格无法加载的问题(CSS&#xff0c;JS)&#xff0c;以下是thinkphp框架教程栏目&#xff0c;对ThinkPHP风格无法加载(CSS&#xff0c;JS)问题的解决方案&#xff0c;希望对有需要的人有所帮助&#xff01;1.项目入口文件in…

UI设计培训中所需要的手绘能力

一、漫画 主要不是绘画能力&#xff0c;更重分镜头&#xff0c;叙事能力&#xff0c;脚本编写能力&#xff0c;很多画的不好&#xff0c;但依然存活很多年的漫画还真不少&#xff0c;甚至可以证明&#xff0c;绘画能力的底线可以很低。 二、游戏原画 虽然工作内容是画画&#x…

LeetCode 2076. 处理含限制条件的好友请求(并查集)

文章目录1. 题目2. 解题1. 题目 给你一个整数 n &#xff0c;表示网络上的用户数目。每个用户按从 0 到 n - 1 进行编号。 给你一个下标从 0 开始的二维整数数组 restrictions &#xff0c;其中 restrictions[i] [xi, yi] 意味着用户 xi 和用户 yi 不能 成为 朋友 &#xff…

LeetCode 2078. 两栋颜色不同且距离最远的房子

文章目录1. 题目2. 解题1. 题目 街上有 n 栋房子整齐地排成一列&#xff0c;每栋房子都粉刷上了漂亮的颜色。给你一个下标从 0 开始且长度为 n 的整数数组 colors &#xff0c;其中 colors[i] 表示第 i 栋房子的颜色。 返回 两栋 颜色 不同 房子之间的 最大 距离。 第 i 栋房…

LeetCode 2079. 给植物浇水(前缀和)

文章目录1. 题目2. 解题1. 题目 你打算用一个水罐给花园里的 n 株植物浇水。 植物排成一行&#xff0c;从左到右进行标记&#xff0c;编号从 0 到 n - 1 。其中&#xff0c;第 i 株植物的位置是 x i 。x -1 处有一条河&#xff0c;你可以在那里重新灌满你的水罐。 每一株植…

LeetCode 2080. 区间内查询数字的频率(哈希+二分查找)

文章目录1. 题目2. 解题2.1 超时解2.2 优化1. 题目 请你设计一个数据结构&#xff0c;它能求出给定子数组内一个给定值的 频率 。 子数组中一个值的 频率 指的是这个子数组中这个值的出现次数。 请你实现 RangeFreqQuery 类&#xff1a; RangeFreqQuery(int[] arr) 用下标从…

java里的super杀意思,java中Super到底是什么意思?必须举例说明!

马克-to-win&#xff0c;Super是一个参考(或说指针)指向他紧邻的父类(见下面的例子)。Super is a reference of its neighbour superclassSo Use super to call superclass’s constructor用super可以指向被隐藏的父类的同名成员。Use super to call superclass’s members tha…

C#中的多文档的使用

1.首先&#xff0c;新建一个窗体&#xff0c;设置窗体的IsMdiContainer true; 窗体的大小为700*600 长700 高600 2.在窗体的Load事件中添加如下代码 private void FormMain_Load(object sender, EventArgs e){Form form new Form();form.FormBorderStyle FormBorderStyle.…