图论

· · 个人记录

1、拓扑排序

逐个删去入度为0的点

区间操作:

设u,v为两个区间,若 Sv < Eu && Su < Ev 则两区间相交;

2、差分约束

#### _**$More$:**_ - 其他形式的不等式可以尝试移项来做,注意$c_i$可以是负数。 - $d_v + d_u \leq w$可以考虑$d_u' = -d_u$替换,要求$\{v\}\cap\{u\}=\empty$。 - 视情况选择最短路/最长路。 - Floyd看对角判定负环/正环。 - $Bellman-Ford$或$SPFA$通用判定负环/正环方法:某点被更新超过$n$次。 ### 3、二分图 $V = A \oplus B , E \subseteq A \times B

无奇环。

黑白染色,邻点异色。

棋盘是二分图

4、匹配

求最大匹配:匈牙利算法

网络流算法

二分图最大点覆盖

5、欧拉路

欧拉路径:恰好经过图中所有边⼀次且仅一次 (一笔画)

欧拉回路:回到出发点的欧拉路径。

存在性⼤前提:图连通 (废话)

有向图:

欧拉路径存在性:

无向图:

欧拉路的dfs构造:

void dfs(int u) {
    for (int v = 1; v <= n; ++v)
        if (G[u][v] == 1)
        {
            G[u][v] = 0;
            dfs(v);
        }
        ans.push_back(u);
}

reverse(begin(ans), end(ans));
Continued...