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

代码随想录算法训练营第五十九天| 图论05

并查集理论基础

并查集理论基础很重要,明确并查集解决什么问题,代码如何写,对后面做并查集类题目很有帮助。

代码随想录

寻找存在的路径

并查集裸题,学会理论基础后,本题直接可以直接刷过

代码随想录

class UnionFind:
    def __init__(self, size):
        self.parent = list(range(size + 1))  # 初始化并查集

    def find(self, u):
        if self.parent[u] != u:
            self.parent[u] = self.find(self.parent[u])  # 路径压缩
        return self.parent[u]

    def union(self, u, v):
        root_u = self.find(u)
        root_v = self.find(v)
        if root_u != root_v:
            self.parent[root_v] = root_u

    def is_same(self, u, v):
        return self.find(u) == self.find(v)


def main():
    import sys
    input = sys.stdin.read
    data = input().split()
    
    index = 0
    n = int(data[index])
    index += 1
    m = int(data[index])
    index += 1
    
    uf = UnionFind(n)
    
    for _ in range(m):
        s = int(data[index])
        index += 1
        t = int(data[index])
        index += 1
        uf.union(s, t)
    
    source = int(data[index])
    index += 1
    destination = int(data[index])
    
    if uf.is_same(source, destination):
        print(1)
    else:
        print(0)

if __name__ == "__main__":
    main()

http://www.dtcms.com/a/73371.html

相关文章:

  • 【MySQL】MySQL如何存储数据?
  • 计算机网络-1-1计算机网络体系结构
  • 清晰易懂的Java8安装教程
  • Deepseek API+Python测试用例一键生成与导出-V1.0.2【实现需求文档图片识别与用例生成自动化】
  • 可视化图解算法:判断链表中是否有环(环形链表)
  • JVM 垃圾回收器分类及其特点详解
  • TypeScript语言的计算机视觉
  • 前端性能优化回答思路
  • 【自学笔记】Redis基础知识点总览-持续更新
  • 移除元素(快慢指针)
  • 测试工作内容
  • 产品更新丨谷云科技ETLCloud 3月更新速递
  • 破解大数据密码:蓝耘Maas平台与阿里QWQ的智能分析革命
  • [MAVEN][经验总结]MAVEN_HOME和M2_HOME的配置建议
  • Linux-数据结构-线性表-单链表
  • 【计量地理学】实验一 地理数据的基本统计分析
  • Cluster Computer(SCI1区)投稿常见问题
  • 解决 Jupyter Notebook 中本地模块修改不生效的问题
  • SpringSecurity配置(自定义登录URI)
  • 【回归算法解析系列07】决策树回归(Decision Tree Regressor)
  • 【C++】树和二叉树的实现(上)
  • P1115 最大子段和(前缀和详解)c++
  • 力扣hot100二刷——二叉树
  • QT编译器mingw与msvc区别及环境配置
  • dfs(十三)206. 反转链表
  • 整合Thymeleaf
  • 动静态库区别
  • 算法题(100):腐烂的苹果
  • js 给元素添加点击事件的方法
  • 【测试篇】关于allpairs实现正交测试用例保姆级讲解,以及常见的错误问题