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

Leetcode 刷题笔记 图论part05

卡码网 107 寻找存在的路径

初识并查集

并查集功能:

  1. 寻找根节点,函数: find(int u),也就是判断这个节点的祖先节点是哪个
  2. 将两个节点接入到同一个集合,函数: join(int u, int v),将两个节点连在同一个根节点上
  3. 判断两个节点是否在同一个集合,函数: isSame(int u, int v),就是判断两个节点是不是同一个根节点

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.kler.cn/a/599991.html

相关文章:

  • Cocos Creator Shader入门实战(六):使用setProperty动态设置材质属性,以及材质常用接口
  • 解决了使用ElementUI日期选择器时,选择“2024第1周”这一特殊时间段所触发的change事件返回时间的特殊情况处理问题。
  • L2-005 集合相似度
  • Android第六次面试总结(Java设计模式篇一)
  • 【JS_hook】爬虫调试技巧
  • 块与块参照的一些知识——CAD c#二次开发
  • html5-3D立方体动画项目开发实践
  • vue中props是什么
  • Edge打不开证书失效的网站
  • uv - 配置 [官方文档翻译]
  • 2021年蓝桥杯——杨辉三角形
  • deepseek搭建本地私有知识库dify安装介绍docker compose图文教程
  • GitHub高级筛选小白使用手册
  • Python----计算机视觉处理(Opencv:霍夫变换)
  • LiteratureReading:[2023] GPT-4: Technical Report
  • 数据库基础知识点(系列一)
  • 论文阅读笔记:Denoising Diffusion Implicit Models
  • 游戏引擎学习第180天
  • SEED XSS 实验环境搭建步骤《精简版》
  • 绿色暴政:Relax Max如何用军工科技定义环保新标准