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

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()

相关文章:

  • 淘客做网站还是做app五种常用的网站推广方法
  • 公司网站建设工作通知如何开发一款app软件
  • 律所网站建设seo推广软件品牌
  • 做网站的费用记什么会计科目网络推广优化方案
  • 做电子商务网站上海网络公司seo
  • 宁波网络推广丿易企网怎么样网络优化主要做什么
  • 零售CMS革新驱动智慧建站转型
  • 重学Java基础篇—如何优雅的删除HashMap元素
  • 腾讯云DNS和Lego工具结合使用,可以方便地为你的域名自动申请和续期SSL证书。
  • Gone v2 配置管理4:连接Apollo配置中心
  • 智能手持终端PDA在设备巡检管理中的应用
  • 【C++ 继承】—— 青花分水、和而不同,继承中的“明明德”与“止于至善”
  • 大数据学习(83)-数仓建模理论
  • InnoDB 引擎核心知识点
  • 【AI】知识蒸馏-简单易懂版
  • C/C++蓝桥杯算法真题打卡(Day9)
  • ffmpeg+QOpenGLWidget显示视频
  • 计算机网络高频(三)UDP基础
  • 质检LIMS系统在基因检测机构的核心应用 基因检测行业的挑战
  • deepseek实战教程-第四篇开放平台接口文档使用
  • 【深度学习】【目标检测】【OnnxRuntime】【C++】YOLOV5模型部署
  • Python中的类
  • Python自动化测试 之 DrissionPage 的下载、安装、基本使用详解
  • Postgresql源码(142)子查询提升pull_up_sublinks
  • python filter() 和 reduce()函数
  • 平芯微PW2609A过压保护芯片应用电路