列表

详情


2737. 找到最近的标记节点

给定一个正整数 n ,表示一个 索引从 0 开始的有向加权 图的节点数量,以及一个 索引从 0 开始的二维数组 edges ,其中 edges[i] = [ui, vi, wi] 表示从节点 ui 到节点 vi 的一条权重为 wi 的边。

并给定一个节点 s 和一个节点数组 marked ;你的任务是找到从 smarked任何 节点的 最短 距离。

返回一个整数,表示从 smarked 中任何节点的最短距离,如果从 s 到任何标记节点没有路径,则返回 -1 。

 

示例 1:

输入:n = 4, edges = [[0,1,1],[1,2,3],[2,3,2],[0,3,4]], s = 0, marked = [2,3]
输出:4
解释:从节点 0(绿色节点)到节点 2(红色节点)有一条路径,即 0->1->2,距离为 1 + 3 = 4。 
从节点 0 到节点 3(红色节点)有两条路径,即 0->1->2->3 和 0->3,分别距离为 1 + 3 + 2 = 6 和 4。 
它们中的最小值是 4。

示例 2:

输入:n = 5, edges = [[0,1,2],[0,2,4],[1,3,1],[2,3,3],[3,4,2]], s = 1, marked = [0,4]
输出:3
解释:从节点 1(绿色节点)到节点 0(红色节点)没有路径。 
从节点 1 到节点 4(红色节点)有一条路径,即 1->3->4,距离为 1 + 2 = 3。 
因此答案是 3。

示例 3:

输入:n = 4, edges = [[0,1,1],[1,2,3],[2,3,2]], s = 3, marked = [0,1]
输出:-1
解释:从节点 3(绿色节点)到任何一个标记节点(红色节点)都没有路径,因此答案是 -1。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int minimumDistance(int n, vector<vector<int>>& edges, int s, vector<int>& marked) { } };

上一题