• 图及算法----并查集父亲查找写法比较 DisjointSet


    1. 花式查找并查集

    
    
    


    class
    DisjointSet: def __init__(self, n): # Args: # n (int): Number of vertices in the graph self.parent = [None] * n # Contains which node is the parent of the node at poisition <i> self.size = [1] * n # Contains size of node at index <i>, used to optimize merge for i in range(n): self.parent[i] = i # Make all nodes his own parent, creating n sets. def find_set(self, a): if self.parent[a] != a: # Very important, memoize result of the recursion in the list to optimize next # calls and make this operation practically constant, O(1) self.parent[a] = find_set(self.parent[a]) # node <a> it's the set root, so we can return that index return self.parent[a] def find_set2(self, a): parent_n = a parent_n1 = self.parent[parent_n] while parent_n1 != parent_n: time.sleep(2) parent_n = parent_n1 parent_n1 = self.parent[parent_n] print(parent_n1, parent_n, a) return parent_n1 def find_set3(self, a): visited, que = set(), [a] u = self.parent[a] while que: time.sleep(2) u = que.pop() if u not in visited: print(f"u={u} was visited") visited.add(u) que.append(self.parent[u]) return u def find_set4(self, a): parent_n1 = a while 1: time.sleep(2) parent_n = parent_n1 parent_n1 = self.parent[parent_n] if parent_n1 == parent_n: break print(parent_n1, parent_n, a) return parent_n1 def find_set5(self, a): parent_n = a while 1: time.sleep(2) parent_n1 = self.parent[parent_n] if parent_n1 == parent_n: break parent_n = parent_n1 print(parent_n1, parent_n, a) return parent_n1 def find_set6(self, a): parent_n = a parent_n1 = self.parent[parent_n] while 1: if parent_n1 != parent_n: # 收敛条件 break time.sleep(2) parent_n = parent_n1 parent_n1 = self.parent[parent_n] print(parent_n1, parent_n, a) return parent_n1
  • 相关阅读:
    解决 WordPress 后台加载非常缓慢/打不开问题
    PHP 数组函数 内部指针
    date picker with jquery
    PHP is_file() 函数
    redis 应用场景-转载
    mvc 伪静态 *html IIS 部署 404 错误
    记录7: office 2016 Mac不能使用的解决过程
    send_keys results in Expected 【object Undefined】undefined to be a string解决方法:更新selenium+geckodriver+firefox
    记录1-更换mac pro内存,硬盘及恢复系统
    记录2-在mac上安装ubuntu 16.04 LTS
  • 原文地址:https://www.cnblogs.com/wdmx/p/10078468.html
Copyright © 2020-2023  润新知