摘要:
Tarian 一遍,标记割边。记录 eDCC(边双联通分量)将 eDCC 缩点。 得到一棵树,树边就是原图的割边。 观察发现.最少需要加(sum+1)/2条边.可以使整个图变为边的双连通图。sum 为缩点后叶节点的个数。 板子 int dfn[N], low[N], tim, dcc[N], cnt 阅读全文
posted @ 2025-02-26 19:30
流氓兔LMT
阅读(16)
评论(0)
推荐(0)
摘要:
割边:对于一个无向图,如果掉一条边后图中的连通块个数增加了. 则称这条边为桥或者割边。 割边判定法则: 当搜索树上存在 × 的一个子节点 y. 满足 low[y]>dfn[x], 则 (x.y)这条边 就是割边。 板子 #include <bits/stdc++.h> using namespace 阅读全文
posted @ 2025-02-26 18:53
流氓兔LMT
阅读(33)
评论(0)
推荐(0)
摘要:
割点判定法则: 如果× 不是根节点。 当搜索树上存在 ×的一个子节点 y。 满足 $low[y]≥dfn[×]$, 那么 × 就是割点。 如果×是根节点。 当搜索树上存在至少两个子节点 满足上述条件。 那么 x就是割点。 板子 #include <bits/stdc++.h> using names 阅读全文
posted @ 2025-02-26 16:29
流氓兔LMT
阅读(10)
评论(0)
推荐(0)
摘要:
2-SAT,简单的说就是给出 n 个集合,每个集合有两个元素,已知若干个 <a,b>,,表示 a 与 b 矛盾(其中 a 与 b 属于不同的集合)。然后从每个集合选择一个元素,判断能否一共选 n 个两两不矛盾的元素 把每个变量看成点,把n 个点拆成 2n 个点, 即把 x_i 拆成i 和 i + n 阅读全文
posted @ 2025-02-26 15:54
流氓兔LMT
阅读(24)
评论(0)
推荐(0)
摘要:
倍增法的核心在于预处理每个节点向上2^k步所能到达的祖先节点,其中k是非负整数。这样,当查询两个节点的LCA时,可以快速地将两个节点跳到同一深度,然后再一起向上跳,直到找到它们的LCA。 板子 #include<bits/stdc++.h> using namespace std; const in 阅读全文
posted @ 2025-02-26 14:09
流氓兔LMT
阅读(14)
评论(0)
推荐(0)
摘要:
费用流 给定一个网络G = (V,E), 每条边有容量限制c(u,v), 还有单位 流量的费用w(u,v)。 当(u,v)的流量为f(u,v)时. 需要花费f(u,v) × w(u,v)的费用。 该网络中总花费最小的最大流称为最小费用最大流,总花费最大 的最大流称为最大费用最大流,二者合称费用流模型 阅读全文
posted @ 2025-02-26 11:00
流氓兔LMT
阅读(40)
评论(0)
推荐(0)
摘要:
Dinic 算法 一次可以累加多条增广路的流量 表头 head[u]:存u 点的第一条出边 深度 dep[u]:存u 点所在的图层 当前弧 cur[u]:存u 点的当前出边 bfs0对点分层,找增广路 dfs() 多路增广 (1) 搜索顺序优化 (分层限制搜索深度) (2)当前弧优化 (剪枝) (3 阅读全文
posted @ 2025-02-26 09:38
流氓兔LMT
阅读(23)
评论(0)
推荐(0)
摘要:
最小割=最大流 bfs()找增广路(最短路思想) 初始化,mf0=0.mf[S]=∞.S入队。 只要队不空,u点出队. 枚举u的所有出边,更新u的最 小容量,记录前驱边,扩展儿子入队。 若能走到T点,返回true。 若不能走到T点,返回false。 EK()求最大流(类似挤牙膏) 循环找增广路,每找 阅读全文
posted @ 2025-02-26 08:18
流氓兔LMT
阅读(24)
评论(0)
推荐(0)

浙公网安备 33010602011771号