《算法竞赛》10 图论

图的存储

  • 啥?邻接表和链式前向星不是一个东西吗。。。

拓扑排序

  • DFS求拓扑序似乎不太常见?了解就行。

欧拉路

  • 这些什么路径的定义确实挺难和名字对上号。。。但是正规题目应该都会给解释吧。
  • 欧拉路:从图中某个点出发,遍历整个图,图中每条边通过且只通过一次。
  • 欧拉回路:起点和终点相同的欧拉路。
  • 数据范围太大 DFS 会爆栈,需要用栈模拟递归。

无向图的连通性 & 有向图的连通性

  • 割点割边还有连通分量什么的求法可以现推。
  • Kosaraju 算法:可以 O(n+m) 找到每个 SCC。对于一个有向图 G,建反图 rG,从 G 上每个没有被 DFS 到的点开始 DFS,按回溯顺序从小到大编号,然后在 rG 上按编号从大到小开始 DFS,每次 DFS 即找到一个 SCC。

基环树

  • 看到每个点连一条边的题想到基环树(森林)
  • 找无向图基环树的环可以用类似拓扑排序的 BFS,每次找度数为 1 的。

2-SAT

  • 每个点都选择拓扑序更靠后的那个。

最短路径

  • 传递闭包可以用于解决 DAG 最小可重链覆盖。
  • SPFA 优化:
    • SLF:使用双端队列,入队时与队头比较,比队头大插队尾,否则插队头。
    • LLL:计算所有点距离平均值 x,队头出队时与 x 比较,比 x 大就去队尾,否则出队。
  • 最优比率环:最大化 ,用 0/1 分数规划(最大化 ab,估计一个值 x,使 abx,移项得 abx0,二分找到最大的 x 就是答案)解决。

最小生成树

  • 严格次小生成树:倍增维护最小生成树上链的次小值。

最大流

  • Dinic 不一定在所有情况下都比 FF 好。

二分图

  • Hall 定理:对于一个二部图 G(X,Y)X 存在一个匹配的充分必要条件为对于 X 的任意子集 SS 的邻居个数 N(S) 必须大于等于 S 的大小 |S|

最小割

  • 最大流 = 最小割。
  • 一个常用最小割建图技巧见 P3227。

费用流

  • 一种方法是把 Dinic 的 BFS 换成 SPFA。
posted @   牛肉爱吃dks  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示