随笔分类 -  图论

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