拓扑排序是对事件先后顺序有要求的排序,但只能是对无向图AOV图,有环图无效(因为没有顺序可言) g = defaultdict(list) indeg = [0] * n #入度 #建图 for x, y in nums: g[y].append(x) indeg[x] += 1 cnt = 0 order = []#拓扑排序表 q = deque…
二进制枚举,在处理在n个选numSelect个1的情况,适合用Gosper's Hack subset = (1 << numSelect) - 1#起始位置 while subset<...: lb = subset & -subset#lower bound left = ((subset ^ x) // lb >…
并查集底层是由森林构成的,森林里的一个树相当于一个集合,并查集可以对集合进行合并(并)和查询(查),“查”的底层是find根节点,目的是区分集合;而“并”就是先找到两个节点的根节点(两个集合),在对根节点进行合并(一般是小树合并到大树),这样就完成了并查集的基本定义。下面是py模板: # 并查集模板 class UnionFind: __slots…