当前位置: 首页 > 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()

相关文章:

  • 【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)
  • 天问二号探测器顺利转入发射区
  • 义乌至迪拜“铁海快线+中东快航”首发,物流成本降低18%
  • 原核试验基地司令员范如玉逝世,从事核试验研究超40年
  • 阳光保险拟设立私募证券投资基金,总规模200亿元
  • 终于,俄罗斯和乌克兰谈上了
  • 体坛联播|巴萨提前2轮西甲夺冠,郑钦文不敌高芙止步4强