随笔分类 - 图论
摘要:学习资料 1.B02 图的存储 2.图是如何存储的:BFS、DFS 3.算法讲解059【必备】建图、链式前向星 各种存图方式的区别 图片来自上述学习资料 这里主要推荐表格中的后两种存图方法,因为适用于各种图。 只有在需要对一个点的所有出边进行排序的场合下,使用vector存边排序更方便,其余情况ve
阅读全文
摘要:P2700 逐个击破 #include <iostream> #include <cstring> #include <algorithm> using namespace std; typedef long long LL; const int N = 2e5 + 10, M = N; int n
阅读全文
摘要:学习资料 1.如何使用「多源 BFS」降低时间复杂度 2.【Leetcode】图的多源BFS详解 3.多源BFS 矩阵距离 4.算法讲解062【必备】宽度优先遍历及其扩展 标准多源BFS 求网格图被全部遍历所需轮数(层数) 994. 腐烂的橘子 - 力扣(LeetCode) using PII =
阅读全文
摘要:
阅读全文
摘要:占坑
阅读全文
摘要:占坑
阅读全文
摘要:注:弗洛伊德算法也可以在数据范围很小时(级别)求单源最短路,例如3488.最短路径。优点是弗洛伊德算法相对于Dijkstra更好写,就三个for循环,代码比较短,缺点是只有在数据范围是级别才能用。 3488. 最短路径 #include <iostream> #include
阅读全文
摘要:超级(虚拟)源点类型 1488. 最短距离(超级源点) 建立超级源点,从超级源点向某些点连一条权值为0的单向边 #include <iostream> #include <algorithm> #include <cstring> #include <queue> using namespace s
阅读全文
摘要:207. 课程表 const int N = 100010, M = 5010; class Solution { public: int h[N], e[M], ne[M], idx = 0; int in[N], q[N]; void add(int a, int b) { e[idx] = b
阅读全文
摘要:求解方法: 二叉树的最近公共祖先(Lowest Common Ancestor) 北邮考研机试题 求两结点之间的最短路径长度 视频讲解 #include <iostream> #include <algorithm> #include <cstring> using namespace std; c
阅读全文
摘要:图的存储 树是一种特殊的图,与图的存储方式相同。 对于无向图中的边ab,存储两条有向边a->b, b->a。 因此我们可以只考虑有向图的存储。 (1) 邻接矩阵:g[a][b] 存储边a->b (2) 邻接表: // 对于每个点k,开一个单链表,存储k所有可以走到的点。h[k]存储这个单链表的头结点
阅读全文
摘要:差分约束 ##1. 求不等式组的可行解 对于以上不等式,差分约束可以得到一组可行解。 在最短路中,求完最短路后,对于每个从j->i可以看成一个不等式 说通俗点就是给我们一个图,我们可以把每条边看成一个不等式,我们在这个图上求每个点到源点的最短距离,求完之后,每个边
阅读全文
摘要:先说结论:如果是一个偶数^1,那么答案是偶数+1.如果是一个奇数^1,那么答案是奇数-1 在学tarjan算法求无向图的双连通分量时,其中有一段代码是 1 is_bridge[i] = is_bridge[i ^ 1] = true; 这句话的作用就是标记一条边及其反向边为桥,但是我一直不明白为什么
阅读全文