图论知识点

欧拉路径|回路

经过每条边恰好一次的路径

无向图的欧拉路径:两个点(或 0 个点)度数为奇数,其余点(或所有点)度数为偶数

有向图的欧拉路径:一个点的出度等于入度 + 1, 一个点的入度等于出度 + 1

无向图欧拉回路:所有点的度数为偶数

有向图欧拉回路:所有点的入度等于出度且联通

Hierholzer算法

void dfs(int u){//s1~sn中存储的是欧拉路径上的点序列
    for (int v = 1; v <= n; v++){
        if (mp[u][v] > 0){
            mp[u][v]--,mp[v][u]--;
            dfs(v);
        }
    }
    s[temp--] = u;
}

强联通分量

有向图中互相可达的极大子图

(tarjan) 判就好了

边点双联通

在一张连通的无向图中,对于两个点u和v,如果无论删去哪条边(只能删去一条)都不能使它们不连通,我们就说u和v边双连通

在一张连通的无向图中,对于两个点u和v,如果无论删去哪个点(只能删去一个,且不能删 和 自己)都不能使它们不连通,我们就说u和v点双连通

边双连通分量定义:在分量内的任意两个点总可以找到两条边不相同的路径互相到达。总而言之就是一个圈,正着走反着走都可以相互到达,至少只有一个点。

点双连通分量定义:任意两个点可以找到一条点不同的路径互相到达。也是一个圈,正反走都可以,至少为一个点。

详见

原文地址:https://www.cnblogs.com/Arielzz/p/15041565.html