图论day59|并查集理论基础、107.寻找存在的路径(卡码网)

news2024/11/24 6:26:25

图论day59|并查集理论基础、107.寻找存在的路径(卡码网)

    • 并查集理论基础
    • 107.寻找存在的路径(卡码网)

并查集理论基础

在这里插入图片描述

  • 使用场景:

    当需要判断两个元素是否在同一个集合里的时候,我们就要想到用并查集

  • 主要功能:

    • 将两个元素添加到一个集合
    • 判断两个元素在不在同一个集合
  • 代码模板

  int n = 1005; // n根据题目中节点数量而定,一般比节点数量大一点就好
  vector<int> father = vector<int> (n, 0); // C++里的一种数组结构
  
  // 并查集初始化
  void init() {
      for (int i = 0; i < n; ++i) {
          father[i] = i;
      }
  }
  // 并查集里寻根的过程
  int find(int u) {
      return u == father[u] ? u : father[u] = find(father[u]); // 路径压缩
  }
  
  // 判断 u 和 v是否找到同一个根
  bool isSame(int u, int v) {
      u = find(u);
      v = find(v);
      return u == v;
  }
  
  // 将v->u 这条边加入并查集
  void join(int u, int v) {
      u = find(u); // 寻找u的根
      v = find(v); // 寻找v的根
      if (u == v) return ; // 如果发现根相同,则说明在一个集合,不用两个节点相连直接返回
      father[v] = u;
  }
  • 路径压缩

    在每次寻根时,把这个节点直接放在根的下面,如图:

img

代码:

int find(int u) {
    return u == father[u] ? u : father[u] = find(father[u]);
 }

其中**father[u] = find(father[u])**就是路径压缩的过程

  • 复杂度
    • 空间复杂度:O(n)
    • 时间复杂度:在O(logn)与O(1)之间,且随着查询或者合并操作的增加,时间复杂度会越来越趋于O(1)(路径压缩)

(上述内容总结自代码随想录)

107.寻找存在的路径(卡码网)

题目描述

给定一个包含 n 个节点的无向图中,节点编号从 1 到 n (含 1 和 n )。

你的任务是判断是否有一条从节点 source 出发到节点 destination 的路径存在。

输入描述

第一行包含两个正整数 N 和 M,N 代表节点的个数,M 代表边的个数。

后续 M 行,每行两个正整数 s 和 t,代表从节点 s 与节点 t 之间有一条边。

最后一行包含两个正整数,代表起始节点 source 和目标节点 destination。

输出描述

输出一个整数,代表是否存在从节点 source 到节点 destination 的路径。如果存在,输出 1;否则,输出 0。

输入示例

5 4
1 2
1 3
2 4
3 4
1 4

输出示例

1

提示信息

img

数据范围:

1 <= M, N <= 100。](C:\Users\Lenovo\Pictures\Screenshots\屏幕截图 2024-10-12 112429.png)

在这里插入图片描述

#include <iostream>
#include <vector>
using namespace std;

int n;
vector<int> father(101,0);

void init()
{
    for(int i=1;i<=n;i++)
        father[i]=i;
}

int find(int u)
{
    return father[u]==u?u:father[u]=find(father[u]);
}

bool isSame(int u,int v)
{
    u=find(u);
    v=find(v);
    return u==v;
}

void join(int u,int v)
{
    u=find(u);
    v=find(v);
    if(u==v)
        return;
    else
        father[u]=v;
}

int main()
{
    int m,s,t,s1,s2;
    cin>>n>>m;
    init();
    for(int i=0;i<m;i++)
    {
        cin>>s>>t;
        join(s,t);
    }
    cin>>s1>>s2;
    if(isSame(s1,s2))
        cout<<1<<endl;
    else
        cout<<0<<endl;
}

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

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

相关文章

到 2029 年,人工智能驱动的电子商务欺诈将超过 1070 亿美元

随着人工智能生成的深度伪造产品的使用日益增多&#xff0c;电子商务欺诈行为急剧增加&#xff0c;给在线商家带来了前所未有的安全挑战。 研究公司 Juniper 的一份报告预测&#xff0c;全球损失将增加 141%&#xff0c;从 2024 年的 440 亿美元增至 2029 年的惊人的 1070 亿美…

Ubuntu安装Mysql并实现远程登录【ubuntu 24.04/mysql 8.0.39】

一、安装MySQL sudo apt update # 更新软件源 sudo apt install mysql-server -y # 安装 mysql --version # 查看版本 sudo systemctl status mysql # 查看运行状态 netstat -tln # 以数字ip形式显示mysql的tcp监听状态二、设置MySQL的root密码 sudo mysql -u root # 使…

【北京迅为】《STM32MP157开发板嵌入式开发指南》- 第176章 通过逻辑分析仪认识I2C波形

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

Win + R 快捷键

页面如下&#xff1a; 连接远程桌面&#xff08;服务器&#xff09; mstsc 打开计算机 calc 新建文本文档 notepad 设备管理器 wifi拉闸调驱动等 devmgmt.msc 计算机管理 调mysql服务等 compmgmt.msc 应用和程序 已安装应用查看、卸载 appwiz.cpl 注册表编辑器 鼠标右键菜单…

腾讯云SDK点播播放数据

点播播放质量监控提供点播播放全链路的数据统计、质量监控及可视化分析服务。支持实时数据上报、数据聚合、多维筛选和精细化定向分析&#xff0c;可帮助企业实时掌控大盘运营状况、了解用户习惯和行为特征&#xff0c;有效指导运营决策、驱动业务增长。 注意事项 点播播放质…

小红书日常实习一面凉经

小红书日常实习一面凉经 发面经&#xff0c;攒人品。 项目拷打&#xff1a; 1.实习中有没有对数据库表做强管控&#xff0c;听没听说过json schema。 2.Reactor响应式编程的基本原理。 3.黑名单功能为什么不用es去实现&#xff1f;你是基于怎样的考虑&#xff1f; 场景八股&am…

在使用商品详情 API 接口时需要注意什么?

在使用商品详情 API 接口时&#xff0c;需要注意以下几个方面&#xff1a; 一、API 使用规范方面 使用频率限制 许多 API 服务提供商都会对 API 的使用频率有所限制。这是为了防止某个用户过度使用 API 资源&#xff0c;影响其他用户的正常使用或者对服务器造成过大压力。例如…

移远通信受邀参展2024中国移动全球合作伙伴大会,以深厚实力全力迎接AI+时代

在中国科技迅速发展的今天&#xff0c;人工智能&#xff08;AI&#xff09;与物联网正在成为推动数字经济变革的重要力量。 为进一步推进AI技术与各领域的融合发展&#xff0c;10月11日至13日&#xff0c;第12届中国移动全球合作伙伴大会在广州市隆重举行&#xff0c;本次大会以…

merlion的dashboard打开方法

安装好merlion包后&#xff0c;在anaconda prompt中进行如下图操作&#xff1a; 先进入创建好的虚拟环境&#xff1a;conda activate merlion再执行命令&#xff1a;python -m merlion.dashboard在浏览器中手动打开图中的地址&#xff1a; http://127.0.0.1:8050 打开后的界面…

云手机与传统手机的区别是什么?

随着科技的快速进步&#xff0c;云手机逐渐成为手机市场的热门选择。与传统的智能手机相比&#xff0c;云手机具有许多独特的功能和优势&#xff0c;尤其在多账号管理和高效操作方面备受关注。那么&#xff0c;云手机究竟与普通手机有哪些区别呢&#xff1f; 1. 更灵活的操作与…

图片怎么转为pdf?1分钟学会图片转为pdf!

图片怎么转为pdf&#xff1f;在现今这个以视觉元素为核心的信息时代&#xff0c;图像已无缝嵌入我们的日常之中&#xff0c;从轻巧的智能手机显示屏到画质超清的大屏电视&#xff0c;各类图像素材犹如万花筒般绚烂多彩&#xff0c;广泛涉及摄影美学、创新设计、知识传播以及科研…

强化学习笔记之【SAC算法】

强化学习笔记之【SAC算法】 前言&#xff1a; 本文为强化学习笔记第三篇&#xff0c;第一篇讲的是Q-learning和DQN&#xff0c;第二篇DDPG&#xff0c;第三篇TD3 TD3比DDPG少了一个target_actor网络&#xff0c;其它地方有点小改动 CSDN主页&#xff1a;https://blog.csdn.n…

Android Studio 和 MATLAB 中 gradle无法下载或下载过慢问题的解决 2024-10-08

系统环境: win10 64bit , MATLAB 2022b 1.从第三方镜像下载gradle包 如 腾讯镜像站 : 腾讯软件源gradle 选择需要的版本进行下载: 这里我选择首图中需要的 gradle-7.0.2-all.zip 2.完成 将下载好的文件放置下列路径 C:\Users\Administrator(这里替换成你所使用的用户名)\…

vscode显示.vscode文件

对于我这样的vscode新手来说&#xff0c;刚开始&#xff0c;都不知道如何生成.vscode文件&#xff0c;敢肯定的是&#xff0c;有很多同学和我一样&#xff0c;也不知道如何生成.vscode文件。 这个的话&#xff0c;我选择了第一个 然后提示报错也没事&#xff0c;因为已经生成…

月之暗面推出 Kimi 探索版:搜索量暴增 10 倍,精读 500 页信息,开启 AI 搜索新纪元

月之暗面推出 Kimi 探索版&#xff1a;搜索量暴增 10 倍&#xff0c;精读 500 页信息&#xff0c;开启 AI 搜索新纪元 作者&#xff1a; 猫头虎 最近&#xff0c;国产 AI 独角兽公司月之暗面再度刷新了我们的认知&#xff0c;其推出的Kimi 探索版凭借自主 AI 搜索能力&#…

【寄存器开发速成】半小时入门寄存器开发(基于STM32的寄存器开发简明教程)

一.认识寄存器 寄存器&#xff08;register&#xff09;是CPU&#xff08;中央处理器&#xff09;的组成部分&#xff0c;是一种直接整合到cpu中的有限的高速访问速度的存储器&#xff0c;它是有一些与非门组合组成的&#xff0c;分为通用寄存器和特殊寄存器。 寄存器是CPU的最…

产品经理,真有35岁这道坎吗?

前言 在职场生涯的某个阶段&#xff0c;产品经理们往往会面临一个普遍的疑问&#xff1a;是否存在一个35岁的门槛&#xff0c;一旦跨过&#xff0c;职业发展就会遭遇瓶颈&#xff1f;尤其是在技术迭代迅速的互联网行业&#xff0c;这样的担忧尤为明显。然而&#xff0c;对于有…

教你如何2小时从零开始搭建一套完整的性能测试环境

文章目录 一、前言1.1 准备工作1.2 最终目标 二、安装步骤2.1 购买云服务器和NAS存储2.2 kubekey方式安装k8s集群2.2.1 环境检查及安装基础包2.2.2 kubekey安装k8s集群2.2.3 压测机环境准备2.2.4 中间件部署2.2.4.1 部署NFS远程共享存储2.2.4.2 部署MySQL2.2.4.3 部署Redis2.2.…

spring 启动失败 active: @env@

参考&#xff1a;SpringBoot启动失败报错&#xff0c;spring.profiles.active:env中环境变量无法识别报错_active: env_profileactive启动报错 ine 3, column 13:-CSDN博客

通义灵码-----阿里巴巴推出的 AI 编程助手,一站式安装使用教程。 我自己就是在用,感觉写代码会高效很多

"通义灵码"&#xff08;Tongyi Lingma&#xff09;&#xff0c;这是阿里巴巴推出的 AI 编程助手。通义灵码是基于阿里云的通义大模型&#xff0c;为开发者提供代码补全、代码生成等智能辅助功能。 启用和使用通义灵码 以下是如何在 IntelliJ IDEA 中安装和使用通义灵…