算竞笔记 - 题集/板子整理(Python)
Preface 以下Code为Cpp 版本的直接移植;请考虑前者为上游及第一参考源 Python 实现,一般地优先考虑动态开内存和哈希化查找(e.g. defaultdict代替线性存储) Code部分未加分类,还请善用Cpp 版本 + Ctrl-F Header from collections import defaultdict 图论 领接表 class graph(defaultdict): def __init__(self): super().__init__(list) def add_edge(self, u, v): self[u].append(v) DSU class dsu(dict): def __getitem__(self, key): if not key in self: super().__setitem__(key, key) return super().__getitem__(key) def find(self, u): if self[u] != u: return self.find(self[u]) return self[u] def join(self, u, v): self[self.find(u)] = self.find(v) def same(self, u, v): return self.find(u) == self.find(v) HLD class HLD: def __init__(self, g: graph = None): self....