LeetCode 1697. 检查边长度限制的路径是否存在(排序+并查集)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一个 n 个点组成的无向图边集 edgeList ,其中 edgeList[i] = [ui, vi, disi] 表示点 ui 和点 vi 之间有一条长度为 disi 的边。请注意,两个点之间可能有 超过一条边

给你一个查询数组queries ,其中 queries[j] = [pj, qj, limitj] ,你的任务是对于每个查询 queries[j] ,判断是否存在从 pj 到 qj 的路径,且这条路径上的每一条边都 严格小于 limitj 。

请你返回一个 布尔数组 answer ,其中 answer.length == queries.length ,当 queries[j] 的查询结果为 true 时, answer 第 j 个值为 true ,否则为 false 。

示例 1:

输入:n = 3, edgeList = [[0,1,2],[1,2,4],[2,0,8],[1,0,16]], 
queries = [[0,1,2],[0,2,5]]
输出:[false,true]
解释:上图为给定的输入数据。注意到 01 之间有两条重边,分别为 216 。
对于第一个查询,01 之间没有小于 2 的边,所以我们返回 false 。
对于第二个查询,有一条路径(0 -> 1 -> 2)两条边都小于 5 ,所以这个查询我们返回 true

示例 2:

输入:n = 5, 
edgeList = [[0,1,10],[1,2,5],[2,3,9],[3,4,13]], 
queries = [[0,4,14],[1,4,13]]
输出:[true,false]
解释:上图为给定数据。提示:
2 <= n <= 10^5
1 <= edgeList.length, queries.length <= 10^5
edgeList[i].length == 3
queries[j].length == 3
0 <= ui, vi, pj, qj <= n - 1
ui != vi
pj != qj
1 <= disi, limitj <= 10^9
两个点之间可能有 多条 边。

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

2. 解题

并查集参考:数据结构–并查集(Disjoint-Set)
相关题目:
LeetCode 261. 以图判树(全部连通+边数=V-1)
LeetCode 305. 岛屿数量 II(并查集)
LeetCode 323. 无向图中连通分量的数目(并查集)
LeetCode 684. 冗余连接(并查集)
LeetCode 685. 冗余连接 II(并查集)
LeetCode 721. 账户合并(并查集)(字符串合并)
LeetCode 737. 句子相似性 II(并查集)
LeetCode 886. 可能的二分法(着色DFS/BFS/拓展并查集)
LeetCode 947. 移除最多的同行或同列石头(并查集)
LeetCode 990. 等式方程的可满足性(并查集)
LeetCode 959. 由斜杠划分区域(并查集)
LeetCode 1061. 按字典序排列最小的等效字符串(并查集)
LeetCode 1101. 彼此熟识的最早时间(排序+并查集)
LeetCode 1202. 交换字符串中的元素(并查集)
LeetCode 1319. 连通网络的操作次数(BFS/DFS/并查集)
LeetCode 5510. 保证图可完全遍历(并查集)
程序员面试金典 - 面试题 17.07. 婴儿名字(并查集)

  • limits 短的优先查询,边也排序,满足要求的在并查集中合并两点
class dsu{ //并查集
public:vector<int> f;dsu(int n){f.resize(n);for(int i = 0; i < n; ++i)f[i] = i;}void merge(int a, int b){int fa = find(a), fb = find(b);f[fa] = fb;}int find(int a){if(a == f[a])return a;return f[a] = find(f[a]);}
};
class Solution {
public:vector<bool> distanceLimitedPathsExist(int n, vector<vector<int>>& edgeList, vector<vector<int>>& queries) {dsu u(n);vector<bool> ans(queries.size(), false);vector<int> q_id(queries.size());iota(q_id.begin(), q_id.end(), 0); //生成 0,1,2,3...sort(q_id.begin(), q_id.end(),[&](auto& a, auto& b){return queries[a][2] < queries[b][2];//对查询的id排序,距离小的先查询});sort(edgeList.begin(), edgeList.end(),[&](auto& a, auto& b){return a[2] < b[2];//边短的先加入并查集合并});int j = 0, limit;for(int i = 0; i < q_id.size(); ++i){limit = queries[q_id[i]][2];while(j < edgeList.size() && edgeList[j][2] < limit)//距离满足要求{u.merge(edgeList[j][0], edgeList[j][1]);//合并两点j++;}if(u.find(queries[q_id[i]][0]) == u.find(queries[q_id[i]][1]))ans[q_id[i]] = true;}return ans;}
};

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

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

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

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

相关文章

限制RICHTEXTBOX的输入的范围

附件&#xff1a;http://files.cnblogs.com/xe2011/WindowsFormsApplication_LimitRichTextBoxInput.rarusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using Syst…

NLP项目工作流程

文章目录1. 谷歌Colab设置2. 编写代码3. flask 微服务4. 打包到容器5. 容器托管参考 基于深度学习的自然语言处理使用这篇文章的数据(情感分类)进行学习。 1. 谷歌Colab设置 Colab 地址 新建笔记本 设置 选择 GPU/TPU 加速计算 测试 GPU 是否分配 import tensorflow…

判断 Python 对象是否包含某个属性的方法

先创建两个类&#xff0c;判断类的属性是否存在&#xff1a; class Foo(object):def __init__(self):super(Foo, self).__init__()self.is_whole 1class Doo(object):def __init__(self):super(Doo, self).__init__()f Foo() d Doo() 方法一&#xff1a;通过异常捕捉来实…

牛客 牛牛浇树(差分)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/10323/A 来源&#xff1a;牛客网 牛牛现在在花园养了n棵树&#xff0c;按顺序从第1棵到第n棵排列着。 牛牛每天会按照心情给其中某一个区间的树浇水。 例如如果某一天浇水的区间为[2,4]&…

再议 语法高亮插件的选择

之前一篇《为博客园选择一个小巧霸气的语法高亮插件》介绍了语法高亮插件的选择&#xff0c;当时只注重速度了。这些天在做深度定制的时候发现一个严重的问题&#xff0c;匹配精度不够。 什么是匹配精度呢&#xff1f;简单说就是没有把代码分块&#xff0c;是否分的足够细&…

Python自定义时间间隔访问网页

方法一&#xff1a;利用webbrowser import time import webbrowserwhile True: # 死循环time.sleep(60 * 1) # 程序等待时间&#xff0c;这里等待1min&#xff0c;参数的基本单位是秒print("正在访问&#xff1a;请稍等。。。")webbrowser.open("https://blo…

Arch Linux下打不开gnome-shell

可能与未正确设置语言环境有关。 检查语言设置&#xff1a;locale -a 检查当前环境下设置&#xff1a;echo $LANG 检查/etc/locale.conf是否存在&#xff0c;是否正确设置。如果不存在&#xff1a;echo en_US.UTF-8 > /etc/locale.conf转载于:https://www.cnblogs.com/vanit…

牛客 挑选方案问题(排列组合)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/10323/B 来源&#xff1a;牛客网 自助餐厅里有5个盘子&#xff0c;里面装的都是面包。 第1个盘子里有无限个面包&#xff1b; 第2个盘子里只有1个面包&#xff1b; 第3个盘子里只有4个面…

微信定时每天给女友发送甜言蜜语(附代码教程)

准备工作&#xff1a; 微信&#xff08;扫码登陆网页版&#xff09;pip install wxpypip install requests 代码教程&#xff1a; from __future__ import unicode_literals from threading import Timer from wxpy import * import requests import randombot Bot()# linu…

【Github教程】史上最全github用法:github入门到精通

原文 http://www.eoeandroid.com/thread-274556-1-1.html 【初识Github】 首先让我们大家一起喊一句“Hello Github”。YEAH!就是这样。Git是一个分布式的版本号控制系统&#xff0c;最初由Linus Torvalds编写&#xff0c;用作Linux内核代码的管理。在推出后&#xff0c;Git在其…

牛客 统计好元组

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/10325/A 来源&#xff1a;牛客网 现在给定一个数组arr&#xff0c;和a,b两个数字&#xff0c;你要做的就是找到&#xff08;i&#xff0c;j&#xff0c;k&#xff09;。且满足 1. 0 <…

从内置函数看 Python 的设计思想:len(x) 是否击败 x.len(),

内置函数是 Python 的一大特色&#xff0c;用极简的语法实现很多常用的操作。 它们预先定义在内置命名空间中&#xff0c;开箱即用&#xff0c;所见即所得。Python 被公认是一种新手友好型的语言&#xff0c;这种说法能够成立&#xff0c;内置函数在其中起到了极关键的作用。 …

解密Redis持久化

本文内容来源于 Redis 作者博文&#xff0c;Redis 作者说&#xff0c;他看到的所有针对 Redis 的讨论中&#xff0c;对 Redis持久化的误解是最大的&#xff0c;于是他写了一篇长文来对 Redis 的持久化进行了系统性的论述。文章非常长&#xff0c;也很值得一看&#xff0c;NoSQL…

牛客 共鸣问题(思维难题)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/10325/B 来源&#xff1a;牛客网 现在有n个音符和m对共鸣关系&#xff0c;编号为1~n&#xff0c; 每个音符自己有一个奏响时的优美程度&#xff0c; 共鸣关系(x,y,z)表示音符x和y同时奏响…

GitHub标星2.6万!Python算法新手入门大全

今天推荐一个Python学习的干货。 几个印度小哥&#xff0c;在GitHub上建了一个各种Python算法的新手入门大全&#xff0c;现在标星已经超过2.6万。这个项目主要包括两部分内容&#xff1a;一是各种算法的基本原理讲解&#xff0c;二是各种算法的代码实现。 传送门在此&#x…

Notepad++的json 格式化

一、在线安装&#xff1a; 1. 打开nodepad 2. 找到JSON Viewer 点击右上角"安装", 会有提示框安装重启notepad, 点击ok 3. 自动重启后, 就可以看到插件这栏有JSON Viewer了, 至于用哪个选项可以格式化, 就来动手试试吧~~~ 二、下载复制到指定位置 1、下载对应版本的…

Pytorch 张量tensor

文章目录1. tensor 张量2. 运算3. 切片、形状size()、改变形状view()4. item() 只能读取一个元素参考 http://pytorch123.com/1. tensor 张量 empty 不初始化 import torch x torch.empty(5,3) # 不初始化 print(x)tensor([[1.0010e-38, 4.2246e-39, 1.0286e-38],[1.0653e-3…

移动硬盘无法弹出的问题

1.运行任务资源管理器 2.结束explorer.exe 3.新建任务explorer.exe 4.弹出移动硬盘 转载于:https://www.cnblogs.com/wbbice/p/3800907.html

python中的有序字典及其使用方法

有序字典和通常字典类似&#xff0c;只是它可以记录元素插入其中的顺序&#xff0c;而一般字典是会以任意的顺序迭代的。 1、普通字典&#xff1a; d1{} d1[a]A d1[b]B d1[c]C d1[d]D #此时的d1 {a:A,b:B,c:C,d:D} for k,v in d1.items():print k,v 输出结果为&#xff1a;…

Pytorch 自动微分

参考 http://pytorch123.com/ Tensor.requires_grad True 记录对Tensor的所有操作&#xff0c;后序.backward() 自动计算所有梯度到 .grad 属性 import torch x torch.ones(2,2, requires_gradTrue) # 默认是False print(x)tensor([[1., 1.],[1., 1.]], requires_gradTrue)…