HELLO WO|

kingwzun

园龄:3年6个月粉丝:111关注:0

随笔分类 -  图论

搜索和图论_复习
摘要:# DFS ## [AcWing 842. 排列数字](https://www.acwing.com/problem/content/844/ "AcWing 842. 排列数字") 代码 ```cpp #include using namespace std; typedef pair PII;
19
0
1
Kruskal重构树
摘要:定义 首先新建 n 个集合,每个集合恰有一个节点,点权为 0。 每次加边按照边权从小到大加入。 每一次加边会合并两个集合,我们可以新建一个点,点权为加入边的边权, 同时将两个集合的根节点分别设为新建点的左儿子和右儿子。 然后我们将两个集合和新建点合并成一个集合。将新建点设为根。 不难发现,在进行 n
127
2
1
C - Friend-Graph HDU - 6152 三元环 & 拉姆齐定理
摘要:原题链接 题意:判断图和补图 是否含有三元环 拉姆齐定理 拉姆齐定理: 在一个大于等于6个点的 完全图中,用红蓝两色染色,一定存在一个红色或者蓝色的三角形。 或者说:在总人数大于等于6的时候,一定存在这样的三个人,他们相互认识,或者相互不认识。 所以 点数n大于等于6:直接输出bad team,否则
86
0
0
四元环计数
摘要:给每个点按照度数大小编不同的号。 枚举点u,枚举和点u相邻的点v,枚举v的相邻且度数比uv大的点z,ans+=cnt[z],++cnt[z]; 复杂度: 枚举uv的复杂度是 O(n+m) 的,然后点z的数量不超过 O(m) 个。 原因: 设与x相邻的度数大于x的点y有s个
80
0
0
求原图与其补图的三元环个数
摘要:原文:https://www.cnblogs.com/NicoDafaGood/p/7552893.html 题意 给一个n个点,m条边的无向图,求该图与其补图的三元环个数. (n<=1e5,m<=1e5,保证没有自环) 思路 首先考虑一个完全图,任意三个点都可以构成一个三元环. 因此完全图三元环的
66
0
0
无向图三元环 查找/计数
摘要:理解 时间复杂度 O(MM) 作用 求出无向图的所有三元环 过程 首先要对所有的无向边进行定向,对于任何一条边,从度数大的点连向度数小的点,如果度数相同,从编号小的点连向编号大的点。 此时这张图是一个有向无环图。 枚举每一个点u,然后将u的所有相邻的点都标记上“被u访问了”, 然
215
0
0
双端队列_01bfs _ 最短路
摘要:概述 作用: 求图中只有两种权值边的最短路。 理解: 如果我们的图中只有两种边0或者1(1也可以是任意的正数)。 每次从队头取出元素,我们就可以使用一个双端队列来模拟dij中的优先队列: 如果扩展到的边权值为0,就放入队头。 如果扩展到的边权值为1,就放入队尾。 很显然这样是满足优先队列的。因此算法
304
0
0
图论 _ 含负权边的最短路
摘要:松弛: 考虑节点u以及它的后继节点v。从起点跑到v有好多跑法,有的跑法经过u,有的不经过。 经过u的跑法的距离就是dist[u]+wu>v。 松弛操作就是比较dist[v]dist[u]+wu>v哪个大。 如果前者大一点,就说明当前的不是最短路,就要赋值为后者,这就叫做
404
0
0
图论 _ 基本最短路算法
摘要:约定: n是指点的数量,m是指边的数量 目录: Dijkstra算法 Dijkstra算法只能用于所有边权均为非负数值的图 Dijkstra算法有两种实现: 一种是朴素实现,复杂度是 O(n2) 一种是堆优化版,复杂度是 O(mlogn) 堆优化版+邻接表存图有以下优点: 不需要对
51
0
0
树的DFS序
摘要:基础概念 树的DFS序列就是说: 树的每一个节点在DFS中进出栈的时间序列。 具体来说就是对树从根开始进行深搜,按搜到的时间顺序把所有节点排队。 就比如 上面这棵树,它的一个DFS序就是: 1 4 6 6 3 9 9 3 4 7 7 2 5 5 8 8 2 1 注意两点: 一棵树的DFS序不唯一。
368
0
0
二分图 _ 复习
摘要:学习请看 染色法判断二分图 基础 题意: 给定一个 N 行 N 列的棋盘,已知某些格子禁止放置。 求最多能往棋盘上放多少块的长度为 2、宽度为 1 的骨牌,并且任意两张骨牌都不重叠。 思路:
29
0
0
图论 __ 链式前向星
摘要:原文 概括 以同起点为一条链,数组head[a]存储起点a的最新录入的一条边的索引,每条边以结构体的形式存储该边信息(该边终点,权值,同起点的边中的上一条边即上一次录入的边的位置),所有边构成一个结构体数组。 很多帖子说到的是存储的是下一条边,这种理解很容易给人误导,应该是每一条边都能通过自身结构体
35
0
0
割点和桥 | 无向图的双连通分量
摘要:割点和桥 桥(割边): 给定一无向连通图,对于其中一边 (u,v),若从图中删掉 (u,v)后,原图分裂成2个或以上不相连的子图(也就是图中的连通分量数增加),则称 (u,v)为原图的割边(或桥)。 割点: 给定一无向连通图,对于其中一点 u,若从图中删掉 u 和所有与 u 相连的边后,原图分裂成成
190
0
0
有向图的强连通分量 scc
摘要:基本概念: 树枝边(x,y):x是y的父亲 前向边(x,y):x是y的祖先结点 后向边(x,y):y是x的祖先结点 横叉边(x,y):在对有向图进行dfs遍历时,x是已经搜过的图的分支(不是前向边),现在在搜的点是y,y到x的有向边是横叉边 连通分量作用 通过缩点,将图变成有向无环图 缩点步骤: f
38
0
0
图的遍历(DFS、BFS)
摘要:深度优先遍历(DFS) 思想: 一条路走到底:走到访问过的结点,退回上一结点;从上一结点开始,继续遍历未访问的结点,重复此项工作。(遍历次序可能不同) 案例:根的先根遍历 代码(邻接矩阵)(连通图) **代码思想:**每次取出一个元素,放入与该元素相连的并且没有放入栈中的其他结点;直到无路可走,只取
208
0
0
最小生成树(ST)概念及构造
摘要:概念 图的生成树 它的一棵含有所有顶点的无环连通子图。 特点: 有n个顶点一定有,n-1条边。 生成树是图的极小连通子图 (去掉一条边则非连通)。 分类: 深度优先生成树 广度优先生成树 最小生成树: 对于加权图(网) 的生成树中边的权重之和最小的生成树。 最小生成树可能不唯一 最小生成树作用: 修
430
0
0
二分图及其应用
摘要:基本概念 二分图又称二部图 定义: 设G=(U,V,E)是一个无向图,U和V是点的集合,E是边的集合。 如果符合: 集合U,V之间有边。 U集合内部没有边。 V集合内部没有边。 则称图G为二分图。 例如: 作用: 进行匹配,比如说给程序员分配工作,为动物分配主人。 判断是否为二部图 思想 染色法 步
940
1
0
拓扑排序
摘要:拓扑序: 在AOV网中,若不存在回路,(有向无环图) 则所有活动可排列成一个线性序列, 使得每个活动的所有前驱活动都排在该活动的前面,我们把此序列叫做拓扑序列 过程: Step0: 预处理得到每个点的入度 Step1: 执行入度为 0 的点(没有前驱),放入一个待执行的容器,在图中删除, Step2
83
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起