zoukankan      html  css  js  c++  java
  • 图及算法----并查集父亲查找写法比较 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
  • 相关阅读:
    spring-data-elasticsearch (elasticsearch 6.7.0) @Document 和 @Field 注解详解
    干货链接(大神)
    Excel word PDF导入导出 Easy POI
    helm 源大集合
    K8s学习干货
    K8S
    阳明大神---容器时代
    K8s高可用集群部署
    最小 docker_lpnm系统
    python 协程和异步编程全解
  • 原文地址:https://www.cnblogs.com/wdmx/p/10078468.html
Copyright © 2011-2022 走看看