![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
binggui2
这个作者很懒,什么都没留下…
展开
-
2021牛客多校第八场 F 离线求值+bitset存图+滚动数组
F在线复杂度高就离线每个点都是由下或右去转移的,只用记录两层节点即可,相当于是一个滚动数组。对于每个节点来说,用一个bitset存图,用来记录当前点是否可以到达地图上的某个点。更新完该点的bitset后更新从该点出发的答案。#include <bits/stdc++.h>using namespace std;const int N = 510, M = 500050;#define node(x, y) x * m + yint n, m, k;char z[N][N原创 2021-08-11 09:00:28 · 87 阅读 · 0 评论 -
拓扑排序
拓扑图 即为 有向无环图拓扑序 满足 对于任何有子节点的节点来说,该节点的子节点在该节点的后面拓扑排序#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int N = 110, M = N * N;int n;int h[N], e[M], ne[M], idx;int q[N];i原创 2020-09-17 22:39:33 · 125 阅读 · 0 评论 -
欧拉路径
欧拉路径:欧拉路是指从图中任意一个点开始到图中任意一个点结束的路径,并且图中每条边通过的且只通过一次。欧拉回路:欧拉回路是指起点和终点相同的欧拉路。对于无向图,所有边都是连通的(1)存在欧拉路径的充分必要条件:度数为奇数的点只能是0个或者2个(2)存在欧拉回路的充分必要条件:度数为奇数的只能是0个2对于有向图,所有边都是连通的(1)存在欧拉路径的充分必要条件:要么所有点的出度均等于入度, 要么除了两个点之外,其余所有点的出度等于入度,剩余的两个点:一个满足出度比入度多1(起点),另一个满足入度比原创 2020-09-17 22:40:24 · 3421 阅读 · 0 评论 -
无向图的双连通分量
边的双连通分量 e-DCC 桥 极大的不存在桥的连通块点的双连通分量 v-DCC 割点 极大的不包含割点的连通块每个割点至少属于两个连通分量任何两个割点之间的边不一定是桥任何一条桥的两个端点不一定是割点这就证明了割点和桥是没有关系的点双连通分量 和 边双连通分量也是没有关系的边双连通分量,时间戳,dfn(u) low(u)1.如何找到桥(假设x->y是一个桥)那么 桥 <=> dfn(u) <low(y) 无法形成环2.如何找到所有的边的双连原创 2020-09-17 22:40:15 · 133 阅读 · 0 评论 -
差分约束
解不等式组xi <= yj + ck就比如x1 <= x2 + 1x2 <= x3 + 2x3 <= x1 - 2x1 = 0x2 = -1x3 = -2这就是其中一个可行解那么就可以把 不等式组 变成 可行解xi <= xj + ck表示有一条 j -> i 权值为 ck 的边,根据不等式组,可以建图,求不等式组的可行解 源点需要满足的条件:从源点出发,一定可以走到所有的边 如果不能遍历所有的边,就是说并不是所有的不等式是满足条件的,那原创 2020-09-17 22:40:07 · 91 阅读 · 0 评论 -
LCA 最近公共祖先
求最近公共祖先的算法首先得是一棵树,这样才有祖先的概念,设a,b为树中的两个节点,原创 2020-09-17 22:39:58 · 102 阅读 · 0 评论 -
强连通分量
tarjan板子const int N = 10010, M = 100010;int n, m;int h[N], e[M], ne[M], idx;int dfn[N], low[N], timestamp;int stk[N], top;bool in_stk[N];int id[N], scc_cnt, Size[N];void tarjan(int u){ dfn[u] = low[u] = ++ timestamp; stk[ ++ top] = u, in原创 2020-08-21 10:20:34 · 110 阅读 · 0 评论