随笔分类 - 图论
摘要:二分图 这里有一个讲义链接 定义: 如果一张无向图的N个节点(N≥2)可以分成A,B两个非空集合,其中A∩B=Ø,并且在同一集合内的点之间都没有边相连,那么称这张无向图为一张二分图。A,B分别称为二分图的左部和右部。 二分图判定: 一张无向图是二分图,当且仅当图中不存在奇环(长度为奇数的环)。 实现
阅读全文
摘要:Tarjan算法 处理强连通分量 例题(banziti)缩点 为了让所有强连通分量都缩成一个点,我们运用一个dfs来解决问题。 首先,有一个数组dfn[]记录的是遍历的顺序。还有一个数组low[]记录的是该点能到达的最小dfn的点。每一次遍历就更新一次dfn[]和low[],将元素push入栈。当更
阅读全文
摘要:树上差分 首先,什么是差分呢? 差分,又名差分函数或差分运算,差分的结果反映了离散化之间的一种变化,是研究离散数学的一种工具,常用函数差近似导数。(感谢bai度百科) 说人话,在数组中就是后一个数减去前一个数的值搞到一个集合里,这玩意儿就是差分数组。 那么,什么是树上差分呢? 树上差分,顾名思义,就
阅读全文
摘要:LCA LCA最近公共祖先 有多种解法,分为在线算法和离线算法,但是有些时候会强制在线。在线算法有树上倍增和树链剖分。 树上倍增 因为数可以用二进制表示,就将一个数拆分为2a+2b+2c+2d+2e...于是我们可以用fa[x][i]来表示点x往上(向着根的方向)走2i步到达的点。 所以转移方程的思
阅读全文
摘要:树的重心 定义:树的重心也叫树的质心。找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡。(感谢bai度百科) 所以怎么实现呢? 找一个点,算它的最大(子树,n-自身大小)的大小,当它最小的时候,那么这个点就是树的重心。 代码如下: 1 v
阅读全文
摘要:最小生成树(基础知识 由于不知道今年考不考最小生成树,于是我们教练让学,让学的话那我就学吧,这就是我与最小生成树的邂逅bushi Prim算法 同班的几位巨巨说,由于Prim朴素算法时间复杂度太高(O(n2)),优化过后与Kruskal是竞争关系,所以不是经常使用,但是算法思想我还是了解了一下,大概
阅读全文
摘要:最短路基础 Dijkstra算法 分析:算法思想就是每次找未标记的最小值,然后再以最小值来更新所有的节点值。 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,m,mapp[505][505],f[100009]; 4 bool vis
阅读全文

浙公网安备 33010602011771号