当前位置: 首页 > news >正文

代码随想录算法训练营第55天| 并查集 107.寻找存在的路径

并查集理论基础:

简单来说就是看一些点是否在同一个集合里。主要用来解决连通性问题。他有两个功能,一个是判断两个元素是否属于同一集合,另一个是将两个元素加入集合。重点在寻根过程,默认一个元素她的根是她自己,如果是的话,就返回她本身,如果不是的话就去找她的根的根。此外还有判断功能和合并功能。

第一次做还是有点不熟练,一遍看定义一边写,本身并不难。

107.寻找存在的路径

题目链接:107.寻找存在的路径

代码:

//因为是否在一组 只需要判断father相不相同就可以 所以有向图无向图都可以用
#include<iostream>
using namespace std;
#include<vector>vector<int> father;//找到这个点的根 寻根过程
int find(int s){if(father[s]==s) return s;//如果根就是自己 直接返回else return find(father[s]);//如果不是 就层层寻找他的根的根
}//将s,t这条边加入并查集
void join(int s, int t){s=find(s);t=find(t);//找到这个点的根if(s==t) return;father[t]=s;
}bool issame(int s, int t){s=find(s);t=find(t);return s==t;
}int main(){int m,n,s,t;cin>>n>>m;//存储点n的根是哪个点for(int i=0;i<=n;i++){father.push_back(i);}for(int i=0;i<m;i++){cin>>s>>t;join(s,t);}cin>>m>>n;if(issame(m,n))cout<<1;else cout<<0;return 0;
}


http://www.mrgr.cn/news/7996.html

相关文章:

  • 开发团队学会应对突发的技术故障和危机
  • Rust 学习笔记 2:猜数字游戏
  • 【Linux篇】vim编译器
  • 仿Muduo库实现高并发服务器——EventLoop模块
  • mysql和oracle函数比较
  • Go语言Time包的使用
  • 深入浅出消息队列----【Broker 集群】
  • Go语言反射入门:理解类型与值的动态操作
  • Django 后端架构开发:存储层调优策略解析
  • Git 版本管理
  • 鸿蒙实现在图片上进行标注
  • git add . 报错 warning: LF will be replaced by CRLF in ******.vue.
  • 【分布式】分布式Session共享
  • Vue小玩意儿:vue3+express.js实现大文件分片上传
  • Python-Poc编写(6)
  • 鸿蒙服务卡片,点击事件,传值
  • Django 后端架构开发:文件云存储,从本地存储到腾讯COS桶集成
  • JDK17 隐藏类 Hidden Classes 介绍
  • 关于武汉芯景科技有限公司的RS232通信接口芯片XJ3243EEUI开发指南(兼容MAX3243EEUI)
  • mac 虚拟机PD19运行E-prime实验遇到E-prime unable to set display mode:0*80004001问题解决