leetcode.1971 寻找图中是否存在路径 - bfs dfs 并查集 邻接表 邻接矩阵

news2024/11/25 10:38:38

1971. 寻找图中是否存在路径

目录

1、bfs - 邻接矩阵

 2、dfs - 邻接表

 3、并查集


1、bfs - 邻接矩阵

  • 让源点source入队 取队头遍历未标记的邻接节点并入队
  • 如果队伍里有dest目标节点 说明dest被遍历到 则return true
class Solution {
public:
    static const int N=2*1e5;
    bool st[N]={false};

    bool validPath(int n, vector<vector<int>>& edges, int source, int dest) 
    {
        vector<vector<int>> g(n);
        //vector<bool> st(n,false);
        for(vector<int>& x:edges)
        {
            int a=x[0],b=x[1];
            g[a].push_back(b);
            g[b].push_back(a);
        }
        queue<int> q;
        q.push(source);
        st[source]=true;
        while(!q.empty())
        {
            int t=q.front();
            q.pop();
            if(t==dest) return true;
            for(int i=0;i<g[t].size();i++) 
                if(!st[g[t][i]])
                {
                    st[g[t][i]]=true;
                    q.push(g[t][i]);
                }
        }
        return false;
    }
};

 2、dfs - 邻接表

  • 首先从顶点source 开始遍历并进行递归搜索
  • 搜索时每次访问一个顶点next时,如果next==dest则该层返回true 不用继续遍历dest相邻的节点
  • 否则将该顶点设为已访问,并递归访问与next相邻且未访问的顶点
  • 如果搜到的最后一个点不能找到dest 则层层返回false
  • 如果搜到一个点能找到dest 则层层返回true
class Solution {
public:
    static const int N=2*1e5+10;
    int h[N],e[N<<1],ne[N<<1],idx;
    bool st[N]={false};

    void add(int a,int b)
    {
        e[idx]=b,ne[idx]=h[a],h[a]=idx++;
    }

    bool dfs(int u,int dest)
    {
        st[u]=true;
        if(u==dest) return true;
        for(int i=h[u];~i;i=ne[i])
        {
            int t=e[i];
            if(!st[t]&&dfs(t,dest))
            {
                return true;
            }
        }
        return false;
    }

    bool validPath(int n, vector<vector<int>>& edges, int source, int dest) 
    {
        memset(h,-1,sizeof h);
        for(vector<int> &x:edges)
        {
            int a=x[0],b=x[1];
            add(a,b),add(b,a);
        }
        return dfs(source,dest);
    }
};

 3、并查集

find 查询a和b是否在一个集合内

unite 如果a和b不在一个集合 则f[a]=b 给a认个祖宗b 也就是把ab放一个集合内

class Solution {
public:
    static const int N=2*1e5+10;
    int f[N];

    int find(int x)
    {
        if(x!=f[x]) f[x]=find(f[x]);
        return f[x];
    }

    void unite(int x,int y)
    {
        int a=find(x),b=find(y);
        if(a!=b) f[a]=b;
    }

    bool validPath(int n, vector<vector<int>>& edges, int source, int dest) 
    {
        for(int i=1;i<=n;i++) f[i]=i;
        for(vector<int> &x:edges)
        {
            int a=x[0],b=x[1];
            unite(a,b);
        }
        return find(source)==find(dest);
    }
};

 

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

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

相关文章

靴子落地:ChatGPT 国内发展或被「拉手刹」

内容一览&#xff1a;深度合成服务在满足用户需求、改进用户体验的同时&#xff0c;也被一些不法人员用于制作、复制、发布、传播违法信息&#xff0c;诋毁、贬损他人名誉、荣誉&#xff0c;仿冒他人身份实施诈骗等违法行为&#xff0c;如今针对这一技术的管理规定终于发布了。…

游戏开发 mask和RectMask2D区别

1. Mask遮罩的大小与形状依赖于Graphic&#xff0c;而RectMask2D只需要依赖RectTransform 2. Mask支持圆形或其他形状遮罩&#xff0c; 而RectMask2D只支持矩形 3. Mask会增加drawcall 4、mask的性质&#xff1a; 性质1&#xff1a;Mask会在首尾&#xff08;首Mask节点&…

Jenkins(4)— 配置钉钉通知

1、创建钉钉机器人 自定义机器人接入 - 钉钉开放平台 群设置 >> 智能群助手 >> 添加机器人 >> 自定义webhook机器人 输入自定义钉钉机器人名字和选择必要的安全设置。 注意&#xff1a;复制上面的加密信息和Webhook&#xff0c;后面在jenkins配置钉钉机器…

[附源码]计算机毕业设计Python的家政服务平台(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

解决jeecgboot框架下单点登录后,页面刷新后,会自动跳转到单点登录服务的登录页问题

1.配置单点服务&#xff0c;可参考官方文档&#xff1a;http://doc.jeecg.com/2044170 - 打开.env文件,UE_APP_SSOtrue即代表开启SSO登录 NODE_ENVproduction VUE_APP_PLATFORM_NAMEJeecg-Boot 企业级快速开发平台 VUE_APP_SSOtrue- 打开.env.development文件&#xff0c;修改…

黑*头条_第7章_app端文章搜索(新版)

黑*头条_第7章_app端文章搜索(新版) 文章目录黑*头条_第7章_app端文章搜索(新版)1) 今日内容介绍1.1)App端搜索-效果图1.2)今日内容2) 搭建ElasticSearch环境2.1) 拉取镜像2.2) 创建容器2.3) 配置中文分词器 ik2.4) 使用postman测试3) app端文章搜索3.1) 需求分析3.2) 思路分析…

m基于CNN卷积神经网络的IBDFE单载波频域均衡算法

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 单载波频域均衡(SC-FDE)是解决符号间干扰(ISI)问题的一项重要技术。相比于单载波时域均衡(SC-TDE)技术和正交频分复用(OFDM)技术,SC-FDE技术具有复杂度低、峰均功率比小的优点。但是,SC-FDE技术中…

Android 测试文字编码格式

测试文字编码格式&#xff0c;与设置字符串格式 调用&#xff1a; juniversalchardet-1.0.3.jar app里的Build.gradle implementation files(libs\\juniversalchardet-1.0.3.jar) java调用&#xff1a; import org.mozilla.universalchardet.UniversalDetector;/*** 测试编…

面试:分库分表经典15连问

目录 1. 我们为什么需要分库分表 1.1 为什么要分库 1.2 为什么要分表 2. 什么时候考虑分库分表&#xff1f; 3. 如何选择分表键 4.非分表键如何查询 5. 分表策略如何选择 5.1 range范围 5.2 hash取模 5.3 一致性Hash 6. 如何避免热点问题数据倾斜&#xff08;热点数…

LaTex教程(二)——LaTeX排版

文章目录1. 中文宏包2. 字符2.1 空格和分段2.2 标点符号2.2.1 引号2.2.2 连字号和破折号2.2.3 省略号3. 文字强调4. 断行断页1. 中文宏包 ctex 宏包和文档类是对CJK 和xeCJK 等宏包的进一步封装。ctex 文档类包括 ctexart /ctexrep / ctexbook&#xff0c;是对LATEX 的三个标准…

第十七届D2大会(II)

一、无极&#xff1a;面向复杂B端项目的低代码平台设计与实践 页面片&#xff1a;自定义的最小低代码开发单元&#xff0c;包括&#xff1a;数据、布局、业务逻辑等低代码编辑器可配合配置分支管理、DevTool等能力&#xff0c;提供更好的工程体验 二、基于H5页面“高差指纹”技…

湿气是怎么来的?身体湿气重什么症状

相信大家在生活中都听说过湿气这个词&#xff0c;尤其是老一辈的人经常会在夏季说晚上湿气重之类的话。其实&#xff0c;从中医的角度来看&#xff0c;湿气更多的是指内脏器官功能失调引起的内生湿邪&#xff0c;主要与脾脏有关。 中医认为&#xff0c;脾胃具有运输水分和湿度的…

Python:python镜像源管理

文章目录常用镜像源配置镜像源&#xff08;1&#xff09;pycharm内部配置&#xff08;2&#xff09;手动添加镜像源&#xff0c;临时使用&#xff08;3) 永久配置镜像源&#xff0c;设置默认anaconda小结常用镜像源 清华&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple…

JAVA中Volatile/Synchronized

线程安全问题的发生&#xff1a; java的线程内存模型中定义了每个线程都有一份自己的共享变量副本&#xff08;本地内存&#xff09;&#xff0c;里面存放自己私有的数据&#xff0c;其他线程不能直接访问&#xff0c;而一些共享变量则存在主内存中&#xff0c;供所有线程访问…

DBCO-Sulfo-NHS二苯基环辛炔-磺基活性酯1400191-52-7水溶性试剂

DBCO-Sulfo-NHS Ester二苯基环辛炔-磺基活性酯1400191-52-7 名称&#xff1a;二苯基环辛炔-磺基-琥珀酰亚胺酯 英文名称&#xff1a;DBCO-Sulfo-NHS Ester 结构式&#xff1a; CAS:1400191-52-7 外观&#xff1a;固体/粉末 分子式&#xff1a;C25H21N2NaO8S 分子量&#x…

【图像压缩】JEPG图像压缩【含Matlab源码 1167期】

⛄一、DCT图像无损压缩简介 1 图像压缩 图像压缩按照压缩过程中是否有信息的损失以及解压后与原始图像是否有误差可以分为无损压缩和有损压缩两大类。无损压缩是指不损失图像质量的压缩&#xff0c;它是对文件的存储方式进行优化&#xff0c;采用某种算法表示重复的数据信息&a…

免费l2接口有什么特点?

作为增值行情&#xff0c;免费l2接口行情特点如下&#xff1a; 1、更丰富的信息 更多的盘口订单数据、逐笔成交数据、成交与订单关联数据及增值数据&#xff0c;揭示交易细节&#xff0c;全方位反映市场状态。 2、更丰富的委托盘口 提供买卖方10个价位的价格、股数和委托笔…

DCN神州数码——设备基本指令 (超详细)

神州数码——设备基本操作 Telnet telnet-server enable username DCN privilege 15 password DCN authentication securityip ip authorization line vty command <1-15> {local | radius | tacacs} SSH ssh-server enable username DCN privilege 15 password DCN …

2022沙丘大会 · 信创专场 GBASE告诉您金融行业数据库如何选型

12月10日&#xff0c;2022沙丘大会信创专场如期召开&#xff0c;本期专场由沙丘社区与中国信通院数据库应用创新实验室联合主办&#xff0c;GBASE南大通用技术总监冯文忠受邀出席并分享《国产数据库金融行业应用情况》主题演讲。 数据库作为金融信息系统的关键环节&#xff0…

产品更新-镭速Raysync v6.5.8.0版本发布

镭速版本在近期发布了v6.5.8.0版本&#xff0c;下面我们一起来看下做了哪些更新。 功能一、支持敏感词检测 互联网时代的发展&#xff0c;用户不断产生海量信息&#xff0c;从而也导致了垃圾信息增加&#xff0c;如政治敏感词、违禁词、垃圾广告、色情、血腥暴力等不良信息&am…