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
  • 相关阅读:
    P2176 [USACO14FEB]路障Roadblock
    【最短路】Dijkstra+ 链式前向星+ 堆优化(优先队列)
    图论其一:图的存储
    【计算几何】二维凸包——Graham's Scan法
    P2742 【模板】二维凸包 / [USACO5.1]圈奶牛Fencing the Cows
    P2639 [USACO09OCT]Bessie的体重问题 【背包问题】
    如何评价代码质量的高低
    乔新亮-衡量企业 IT 团队价值的唯一指标是什么
    我总结了平台的5道坎
    hadoop namenode的工作机制
  • 原文地址:https://www.cnblogs.com/wdmx/p/10078468.html
Copyright © 2011-2022 走看看